我有一个名为 df
的 pandas 数据框。在此数据框中,我得到了一个名为 value
的变量。我想添加一个变量来计算相同值的出现次数,直到它更改为另一个值。我们将这个新变量称为 count
。
我的数据框看起来像这样:
import pandas as pd
import numpy as np
ar = np.array([[1], [1], [2],[2], [3], [3], [1], [1], [2], [2]])
df = pd.DataFrame(ar, columns = ['Value'])
print(df)
Value
0 1
1 1
2 2
3 2
4 3
5 3
6 1
7 1
8 2
9 2
我尝试了这段代码:
df['count'] = df.groupby('Value').cumcount() + 1
返回结果:
print(df)
Value count
0 1 1
1 1 2
2 2 1
3 2 2
4 3 1
5 3 2
6 1 3
7 1 4
8 2 3
9 2 4
我期望这样的事情:
print(df)
Value count
0 1 1
1 1 2
2 2 1
3 2 2
4 3 1
5 3 2
6 1 1
7 1 2
8 2 1
9 2 2
有没有办法获得该输出?
最佳答案
IIUC,使用:
df=df.assign(count=df.groupby(df.Value.ne(df.Value.shift()).cumsum()).cumcount().add(1))
<小时/>
Value count
0 1 1
1 1 2
2 2 1
3 2 2
4 3 1
5 3 2
6 1 1
7 1 2
8 2 1
9 2 2
地点:
print(df.Value.ne(df.Value.shift()))
<小时/>
0 True
1 False
2 True
3 False
4 True
5 False
6 True
7 False
8 True
9 False
Name: Value, dtype: bool
关于python - 如何计算一个值的出现次数,直到它变为另一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56662092/