DataFrame:添加包含组大小的列

17 投票
2 回答
9747 浏览
提问于 2025-04-18 02:22

我有一个这样的数据表:

    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行 fsqdigits 是1,2行 fsqdigits 是2,等等。

2 个回答

8

一般来说,尽量使用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
23

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,如果你想要在某个条件满足时才运行一段代码,你就可以使用“条件语句”。这就像是在说:“如果发生了某件事,那就做这个事情。”

条件语句通常是用“if”这个词来开始的。你可以想象成一个开关,只有在条件满足的时候,这个开关才会打开,代码才会执行。

此外,还有一些其他的条件语句,比如“else”,它的意思是“否则”。这就像是在说:“如果条件不满足,那就做另外一件事情。”

通过使用这些条件语句,你可以让程序根据不同的情况做出不同的反应,这样就能让你的程序更加灵活和智能。

总之,条件语句是编程中非常重要的工具,它帮助我们控制程序的执行流程,让程序能够根据实际情况做出相应的决策。

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]

撰写回答