gpt4 book ai didi

python pandas groupby() 结果

转载 作者:IT老高 更新时间:2023-10-28 20:39:38 26 4
gpt4 key购买 nike

我有以下 python pandas 数据框:

df = pd.DataFrame( {
'A': [1,1,1,1,2,2,2,3,3,4,4,4],
'B': [5,5,6,7,5,6,6,7,7,6,7,7],
'C': [1,1,1,1,1,1,1,1,1,1,1,1]
} );

df
A B C
0 1 5 1
1 1 5 1
2 1 6 1
3 1 7 1
4 2 5 1
5 2 6 1
6 2 6 1
7 3 7 1
8 3 7 1
9 4 6 1
10 4 7 1
11 4 7 1

我想要另一列存储固定(两者)A 和 B 的 C 值的总和值。也就是说,类似于:

    A  B  C  D
0 1 5 1 2
1 1 5 1 2
2 1 6 1 1
3 1 7 1 1
4 2 5 1 1
5 2 6 1 2
6 2 6 1 2
7 3 7 1 2
8 3 7 1 2
9 4 6 1 1
10 4 7 1 2
11 4 7 1 2

我已经尝试过使用 pandas groupby 并且有点效果:

res = {}
for a, group_by_A in df.groupby('A'):
group_by_B = group_by_A.groupby('B', as_index = False)
res[a] = group_by_B['C'].sum()

但我不知道如何将结果从 res 有序地“获取”到 df 中。对此有任何建议都会非常高兴。谢谢你。

最佳答案

这是一种方法(虽然感觉这应该与应用一起使用,但我无法理解)。

In [11]: g = df.groupby(['A', 'B'])

In [12]: df1 = df.set_index(['A', 'B'])

size groupby 函数是你想要的,我们必须将它匹配到'A'和'B'作为索引:

In [13]: df1['D'] = g.size()  # unfortunately this doesn't play nice with as_index=False
# Same would work with g['C'].sum()

In [14]: df1.reset_index()
Out[14]:
A B C D
0 1 5 1 2
1 1 5 1 2
2 1 6 1 1
3 1 7 1 1
4 2 5 1 1
5 2 6 1 2
6 2 6 1 2
7 3 7 1 2
8 3 7 1 2
9 4 6 1 1
10 4 7 1 2
11 4 7 1 2

关于python pandas groupby() 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17666075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com