gpt4 book ai didi

python - Pandas 将列添加到 groupby 数据框

转载 作者:太空狗 更新时间:2023-10-29 17:43:08 24 4
gpt4 key购买 nike

我有这个简单的数据框df:

df = pd.DataFrame({'c':[1,1,1,2,2,2,2],'type':['m','n','o','m','m','n','n']})

我的目标是计算每个 ctype 值,然后添加一个大小为 c 的列。所以开始:

In [27]: g = df.groupby('c')['type'].value_counts().reset_index(name='t')

In [28]: g
Out[28]:
c type t
0 1 m 1
1 1 n 1
2 1 o 1
3 2 m 2
4 2 n 2

第一个问题解决了。那么我也可以:

In [29]: a = df.groupby('c').size().reset_index(name='size')

In [30]: a
Out[30]:
c size
0 1 3
1 2 4

如何将 size 列直接添加到第一个数据框?到目前为止,我将 map 用作:

In [31]: a.index = a['c']

In [32]: g['size'] = g['c'].map(a['size'])

In [33]: g
Out[33]:
c type t size
0 1 m 1 3
1 1 n 1 3
2 1 o 1 3
3 2 m 2 4
4 2 n 2 4

哪个有效,但是有没有更直接的方法来做到这一点?

最佳答案

使用transform要从 groupby 聚合中将列添加回 orig df,transform 返回一个 Series,其索引与 orig df 对齐:

In [123]:
g = df.groupby('c')['type'].value_counts().reset_index(name='t')
g['size'] = df.groupby('c')['type'].transform('size')
g

Out[123]:
c type t size
0 1 m 1 3
1 1 n 1 3
2 1 o 1 3
3 2 m 2 4
4 2 n 2 4

关于python - Pandas 将列添加到 groupby 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37189878/

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