DataFrame:添加一个列,该列包含组大小

17

我有以下数据框:

    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行的digits等于1,有2个fsq行的digits等于2,以此类推。

2个回答

23
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]

小问题:您如何将iPython的输入/输出粘贴到 Stackoverflow 的代码格式中? - luffe
谢谢 DSM。我刚刚从终端复制,粘贴到这里。然后选择文本并按CTRL-k格式化为代码。 - TomAugspurger

8

通常情况下,应尽可能使用Pandas定义的方法。这通常会更有效率。

在这种情况下,您可以像df.groupby('digits')['fsq'].size()一样使用'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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接