3 回答

TA贡献1846条经验 获得超7个赞
使用GroupBy.cumcount的计数连续值和列减value:
#consecutive rows to Series g
g = df['value'].ne(df['value'].shift()).cumsum()
df['value'] = df['value'] - df.groupby(g).cumcount()
print (df)
name value
0 a 116
1 b 115
2 c 114
3 d 225
4 e 224
5 f 223
6 g 222

TA贡献1804条经验 获得超3个赞
如果连续值是唯一的,则可以 transform
df.groupby('value').value.transform(lambda k: k - k.reset_index().index)
0 116
1 115
2 114
3 225
4 224
5 223
6 222

TA贡献1785条经验 获得超4个赞
使用 cumcount
df.value-=df.groupby('value').cumcount()
df
Out[215]:
name value
0 a 116
1 b 115
2 c 114
3 d 225
4 e 224
5 f 223
6 g 222
添加回答
举报