Python-基于列值将数据帧拆分为多个数据帧,并用这些值命名它们

2024-04-27 12:23:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大数据集,列出了在全国不同地区销售的竞争对手产品。我希望通过在这些新数据帧的名称中使用列值的迭代过程,根据区域将此数据帧拆分为其他几个数据帧,以便可以分别处理每个数据帧-例如,按价格对每个区域中的信息进行排序,以了解每个区域中的市场情况。我给出了以下数据的简化版本:

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还很陌生,而且还在学习,所以如果真的有一种不同的、更明智的方法来解决这个问题,我非常愿意接受建议。


Tags: 数据代码区域df情况region地区全国
1条回答
网友
1楼 · 发布于 2024-04-27 12:23:11

按不同值进行子集设置称为groupby,如果只想使用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

相关问题 更多 >