Python (熊猫)如何计数与以前相同的值出现的频率?(并从中提取一个新列)

Python (熊猫)如何计数与以前相同的值出现的频率?(并从中提取一个新列),python,pandas,feature-extraction,Python,Pandas,Feature Extraction,我正在寻找一种从我的Pandas数据框中提取新列的方法,该数据框显示当前值与以前相同(无中断)的发生频率计数 e、 g.从类似以下的列中: df = pd.DataFrame([10, 10, 23, 23, 9, 9, 9, 10, 10, 10, 10, 12], columns=['RiseOrFall']) 应提取以下列: 0 1 0 1 0 1 2 0 1 2 3 0 类似于几年前一位用户发布的内容: df = df.groupby(df['RiseOrFall'].ne(df['

我正在寻找一种从我的Pandas数据框中提取新列的方法,该数据框显示当前值与以前相同(无中断)的发生频率计数

e、 g.从类似以下的列中:

df = pd.DataFrame([10, 10, 23, 23, 9, 9, 9, 10, 10, 10, 10, 12], columns=['RiseOrFall'])
应提取以下列:

0
1
0
1
0
1
2
0
1
2
3
0
类似于几年前一位用户发布的内容:

df = df.groupby(df['RiseOrFall'].ne(df['RiseOrFall'].shift()).cumsum())['RiseOrFall'].value_counts()

Or:

df = df.groupby([df['RiseOrFall'].ne(df['RiseOrFall'].shift()).cumsum(), 'RiseOrFall']).size()

print (df)
values  values
1       10        2
2       23        2
3       9         3
4       10        4
5       12        1
Name: values, dtype: int64
但通过上面的代码,我只得到了该值在一行中出现多少次的总值(而不是计数) 我需要的是一个索引与列“RiseOrFall”相同且行数相同的列,如下所示:

0
1
0
1
0
1
2
0
1
2
3
0

您可以使用
df.RiseOrFall.ne(df.RiseOrFall.shift()).cumsum()
RiseOrFall
列上的每个更改进行分组,然后使用
cumcount

df.assign(Count=df.groupby(df.RiseOrFall.ne(df.RiseOrFall.shift()).cumsum()).cumcount())

注意:请将此项分配回:
df=df。分配(…)

    RiseOrFall  Count
0           10      0
1           10      1
2           23      0
3           23      1
4            9      0
5            9      1
6            9      2
7           10      0
8           10      1
9           10      2
10          10      3
11          12      0