pandas 使用另一列连续减去该列的值

2fjabf4q  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(161)

我有一个df,看起来像这样:
| 类别|人数|常数|
| - ------|- ------|- ------|
| 一个|141.2分|二百七十一点零一分|
| 一个|五十七点四|二百七十一点零一分|
| 一个|五十一点三|二百七十一点零一分|
| 两个|二十四点六九分|二十七点二十九分|
| 两个|十二点七二分|二十七点二十九分|
| 两个|十点三十七分|二十七点二十九分|
我想要的是一个可以遍历每一行,并在给定常量的前一个值的情况下计算常量的新值的东西,结果 Dataframe 应该看起来像这样:
| 类别|人数|常数|
| - ------|- ------|- ------|
| 一个|141.2分|一百二十九块九十九|
| 一个|五十七点四|七十二块五十九|
| 一个|五十一点三|二十一点二十九分|
| 两个|二十四点六九分|二、六|
| 两个|十二点七二分| -10.12 |
| 两个|十点三十七分| -20.49 |
更新:第一次计算为数值-常数,其余计算为常数[n-1] -数值[n]
有没有不使用for循环的方法?

yk9xbfzb

yk9xbfzb1#

使用groupby.cumsum计算累积和,并从“常数”中减去:

df['Constant'] -= df.groupby('Category')['Number'].cumsum()

或者,如果您不希望就地操作

df['New_Col'] = df['Constant'].sub(df.groupby('Category')['Number'].cumsum())

输出:

Category  Number  Constant
0      One  141.20    129.81
1      One   57.40     72.41
2      One   51.30     21.11
3      Two   24.69      2.60
4      Two   12.72    -10.12
5      Two   10.37    -20.49

相关问题