首页 > 解决方案 > Pandas 如何针对以下场景进行 groupby

问题描述

我在尝试理解下面的 group by 代码片段时遇到问题。我试图了解 df.groupby(L).sum() 的计算是如何发生的。

这是我从 url enter link description here获得的代码片段。谢谢你的帮助。

初始化数据帧的值

熊猫按结果分组

标签: pythonpandasjupyter-notebook

解决方案


行按列表的值分组,因为列表的长度与 中的行数相同DataFrame,这意味着:

rng = np.random.RandomState(0)
df = pd.DataFrame({'key': ['A', 'B', 'C', 'A', 'B', 'C'],
                   'data1': range(6),
                   'data2': rng.randint(0, 10, 6)},
                   columns = ['key', 'data1', 'data2'])
L = [0, 1, 0, 1, 2, 0]
print (df)
  key  data1  data2
0   A      0      5 <-0
1   B      1      0 <-1
2   C      2      3 <-0
3   A      3      3 <-1
4   B      4      7 <-2
5   C      5      9 <-0

所以:

data1 for 0 is 0 + 2 + 5 = 7
data2 for 0 is 5 + 3 + 9 = 17

data1 for 1 is 1 + 3 = 4
data2 for 1 is 0 + 3 = 3

data1 for 2 is 4
data2 for 2 is 7

输出:

print(df.groupby(L).sum())
   data1  data2
0      7     17
1      4      3
2      4      7

省略了关键列,因为自动排除了“讨厌”列


推荐阅读