通过对pandas中的列值进行分组来拆分DataFrame

时间:2017-10-24 21:03:35

标签: python pandas dataframe

我有一个DataFrame

S   C
3   2
3   2
3   2
3   2
3   2
3   2
1   4
1   4
1   4
1   4
1   4
1   4

如何拆分数据帧,以便一个数据帧在S和C中有3和2,而另一个在S和C中有1和4

1 个答案:

答案 0 :(得分:5)

groupby

使用理解
  1. 关键元素是df.groupby,它提供了您想要的分组。
  2. 但是,您需要将其简化为一个列表,以便将其“拆分”为单独的数据框。
  3. 您可以遍历groupby对象,该对象传递一个元组,其中第一个元素是组的名称(我们用_掩盖它),第二个元素是单个数据框。
  4. 通过使用理解,我们可以遍历groupby并捕获每个元组的第二个元素......从而创建数据帧列表。
  5. 查看:
    List Comprehensions
    Grouping Stuff

    list_of_df = [g for _, g in df.groupby(['NUMBER_OF_TRIPS', 'SERVICE_CLASS'])]
    
    print(*list_of_df, sep='\n\n')
    
        NUMBER_OF_TRIPS  SERVICE_CLASS
    6                 1              4
    7                 1              4
    8                 1              4
    9                 1              4
    10                1              4
    11                1              4
    
       NUMBER_OF_TRIPS  SERVICE_CLASS
    0                3              2
    1                3              2
    2                3              2
    3                3              2
    4                3              2
    5                3              2