提问人:jaried 提问时间:10/9/2021 更新时间:10/9/2021 访问量:354
如何进行 DataFrame 列的分类和计数?[复制]
How to do the classification and count of DataFrame columns? [duplicate]
问:
我想计算连续的 s,如果有 s,则计算连续的数字,并将数字分配给列,如果它们遇到 , .0
0
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()
答:
2赞
Psidom
10/9/2021
#1
对于变量,首先计算,以便为包含相同值的每个连续序列分配一个。要获得可以分配给原始数据框的同等大小的序列,请使用以下代替: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
评论
starkoverflow