Python (熊猫)如何计数与以前相同的值出现的频率?(并从中提取一个新列)
我正在寻找一种从我的Pandas数据框中提取新列的方法,该数据框显示当前值与以前相同(无中断)的发生频率计数 e、 g.从类似以下的列中: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['
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