相对地将python pandas列递减至另一列

时间:2019-02-07 00:46:52

标签: python pandas

我具有这种结构,其中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

1 个答案:

答案 0 :(得分:2)

按照@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