我有以下数据框:
fsq digits digits_type
0 1 1 odd
1 2 1 odd
2 3 1 odd
3 11 2 even
4 22 2 even
5 101 3 odd
6 111 3 odd
我想添加一个最后一列 count ,其中包含属于 digits 组的 fsq 的数量,即:
fsq digits digits_type count
0 1 1 odd 3
1 2 1 odd 3
2 3 1 odd 3
3 11 2 even 2
4 22 2 even 2
5 101 3 odd 2
6 111 3 odd 2
由于有3个 fsq 行位数等于1,2 fsq 行位数等于2,等等。
谢谢
答案 0 :(得分:15)
In [395]: df['count'] = df.groupby('digits')['fsq'].transform(len)
In [396]: df
Out[396]:
fsq digits digits_type count
0 1 1 odd 3
1 2 1 odd 3
2 3 1 odd 3
3 11 2 even 2
4 22 2 even 2
5 101 3 odd 2
6 111 3 odd 2
[7 rows x 4 columns]
答案 1 :(得分:1)
通常,应尽可能使用Pandas定义的方法。这通常会更有效。
在这种情况下,您可以像使用'size'
一样使用df.groupby('digits')['fsq'].size()
:
df = pd.concat([df]*10000)
%timeit df.groupby('digits')['fsq'].transform('size') # 3.44 ms per loop
%timeit df.groupby('digits')['fsq'].transform(len) # 11.6 ms per loop