Skip to main content
 首页 » 编程设计

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

2025年05月04日15zhengyun_ustc

我有一个数据框

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

请您参考如下方法:

使用 groupby 的推导式

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

参见:
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