我有一个带列的数据框
价值 |
---|
0 |
0 |
0 |
1 |
1 |
0 |
0 |
我想创建另一列,以便它计算一个值在批次中重复的次数
价值 | 频率 |
---|---|
0 | 3 |
0 | 3 |
0 | 3 |
1 | 2 |
1 | 2 |
0 | 1 |
分组依据在这里不起作用。 你会怎么做?
通过对照“值”的移动版本检查
Series.ne
并应用 Series.cumsum
来区分组。将结果传递给 [df.groupby
] 并获取 groupby.transform
内的“大小”:
import pandas as pd
data = {'Value': {0: 0, 1: 0, 2: 0, 3: 1, 4: 1, 5: 0}}
df = pd.DataFrame(data)
df['Freq'] = df.groupby(df['Value'].ne(df['Value'].shift()).cumsum()).transform('size')
输出
Value Freq
0 0 3
1 0 3
2 0 3
3 1 2
4 1 2
5 0 1