我有一个像这样的数据框:
价值 |
---|
0 |
0 |
0 |
1 |
1 |
0 |
0 |
我想创建另一列,以便它计算一个值在批次中重复的次数:
价值 | 频率 |
---|---|
0 | 3 |
0 | 3 |
0 | 3 |
1 | 2 |
1 | 2 |
0 | 1 |
分组依据在这里不起作用。 你会怎么做?
这是一种方法:
Series.ne
与“值”的移动版本 (Series.shift
) 来区分组并应用 Series.cumsum
。df.groupby
并在groupby.transform
中获取“大小”:import pandas as pd
data = {'Value': {0: 0, 1: 0, 2: 0, 3: 1, 4: 1, 5: 0}} # deleting the last `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