python - 如何对DataFrame的列进行分类和计数?

标签 python pandas dataframe group-by

我想计算连续的0 s,如果有0 s,count连续的数字,并将数字分配给 count列,如果遇到1 , recount .

我也尝试了几种方法,但都没有达到我的效果。

我的数据框的示例如下:

import numpy as np
import pandas as pd
np.random.seed(2021)
a = np.random.randint(0, 2, 20)
df = pd.DataFrame(a, columns=['No.'])
print(df)
     No.
0     0
1     1
2     1
3     0
4     1
5     0
6     0
7     0
8     1
9     0
10    1
11    1
12    1
13    1
14    0
15    0
16    0
17    0
18    0
19    0

我需要的结果:

    No. count
0   0   1
1   1   0
2   1   0
3   0   1
4   1   0
5   0   3
6   0   3
7   0   3
8   1   0
9   0   1
10  1   0
11  1   0
12  1   0
13  1   0
14  0   6
15  0   6
16  0   6
17  0   6
18  0   6
19  0   6

我尝试了以下方法,但都没有达到我的效果。我该怎么办?

groups = df['No.'].ne(0).cumsum()
df['count'] = df['No.'].eq(0).groupby(groups).count()
df['count'] = df['No.'].eq(0).groupby(groups).agg(len)
df['count'] = df['No.'].groupby(groups).agg(len)
df['count'] = df['No.'].groupby(groups).count()

最佳答案

对于您的 groups 变量,首先计算 diff,以便为包含相同值的每个连续序列分配一个 id。要获得可分配给原始数据框的相同大小的 count 系列,请使用 transform 而不是 agg:

df['count'] = 0
groups = df['No.'].diff().ne(0).cumsum()
df.loc[df['No.'] == 0, 'count'] = df['No.'].groupby(groups).transform('size')
df

    No.  count
0     0      1
1     1      0
2     1      0
3     0      1
4     1      0
5     0      3
6     0      3
7     0      3
8     1      0
9     0      1
10    1      0
11    1      0
12    1      0
13    1      0
14    0      6
15    0      6
16    0      6
17    0      6
18    0      6
19    0      6

关于python - 如何对DataFrame的列进行分类和计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69503737/

相关文章:

python - 使用 Python 更改 csv 数据列格式

python - pandas dataframe 删除频率较低的行

python - 我有一个印地文 wordnet 数据库和 API。我想从 NLTK python 访问这个 wordnet。有没有办法将我们自己的wordnet添加到NLTK中?

python - 使用 BeautifulSoup 获取完整的 URL 而不仅仅是路径

python - 我怎样才能缩短这个Python代码?

python - 如何正确使用 pandas Series.map() 和映射字典?

r - 尝试合并两个具有特定条件的数据帧和 R 中行的间隙

r - 如何打破排名中存在差距的平局

python - 使用 dill 库时出现 TypeError : can't pickle _tkinter. tkapp 对象

Python-从自动开始下载的链接保存pdf