我有这个结构,B列的值与A列的值相同。

df = pd.DataFrame(dict(A=list('aaabbcccc'), B=list('333224444')))
df
#    A  B
# 0  a  3
# 1  a  3
# 2  a  3
# 3  b  2
# 4  b  2
# 5  c  4
# 6  c  4
# 7  c  4
# 8  c  4

我寻找一种优雅的方法来添加C列,即每行B的值递减。
res
#    A  B  C
# 0  a  3  2
# 1  a  3  1
# 2  a  3  0
# 3  b  2  1
# 4  b  2  0
# 5  c  4  3
# 6  c  4  2
# 7  c  4  1
# 8  c  4  0

最佳答案

使用@ALollz建议的cumcount(ascending=False)

df.groupby('B').cumcount(ascending=False)

0    2
1    1
2    0
3    1
4    0
5    3
6    2
7    1
8    0
dtype: int64

关于python - 相对于另一个递减python pandas列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54564779/

10-12 17:57