我有一个大型数据集,列出了在全国不同地区销售的竞争对手产品。我希望通过使用这些新数据帧名称中的列值的迭代过程,根据区域将该数据帧拆分为其他几个数据帧,以便我可以单独处理每个数据帧 - 例如按价格对每个地区的信息进行排序,以了解每个地区的市场情况。我给出了以下数据的简化版本:
Competitor Region ProductA ProductB
Comp1 A £10 £15
Comp1 B £11 £16
Comp1 C £11 £15
Comp2 A £9 £16
Comp2 B £12 £14
Comp2 C £14 £17
Comp3 A £11 £16
Comp3 B £10 £15
Comp3 C £12 £15
我可以使用以下命令创建区域列表:
region_list=df['Region'].unique().tolist()
我希望在迭代循环中使用它来生成许多数据帧,例如
df_A :
Competitor Region ProductA ProductB
Comp1 A £10 £15
Comp2 A £9 £16
Comp3 A £11 £16
我可以使用代码为每个区域手动执行此操作
df_A=df.loc[df['Region']==A]
但实际情况是,该数据集包含大量区域,这会使该代码变得乏味。有没有办法创建一个迭代循环来复制这个?有一个类似的问题询问如何分割数据帧,但答案没有显示如何根据每个列值标记输出。
我对 Python 还很陌生,并且仍在学习中,所以如果实际上有一种不同的、更明智的方法来解决这个问题,我非常乐意接受建议。
按不同值进行子集化称为groupby
,如果只是想用 a 迭代组for
循环,语法为:
for region, df_region in df.groupby('Region'):
print(df_region)
Competitor Region ProductA ProductB
0 Comp1 A £10 £15
3 Comp2 A £9 £16
6 Comp3 A £11 £16
Competitor Region ProductA ProductB
1 Comp1 B £11 £16
4 Comp2 B £12 £14
7 Comp3 B £10 £15
Competitor Region ProductA ProductB
2 Comp1 C £11 £15
5 Comp2 C £14 £17
8 Comp3 C £12 £15
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)