我有一个按期间包含财务指标的数据框,我想在其中计算上一期间的百分比变化:
id year profit assets
qwe 2018 -1373 19577
qwe 2019 1328 23361
dfe 2018 22836 16789
dfe 2019 22290 15335
dfg 2018 -1212 1732
dfg 2019 3089 2323
为了计算动态,我使用以下代码:
res = (df[["id","year"]]
.join(df
.groupby(["id"], as_index=False)
[["profit","assets"]]
.pct_change().fillna(0)*100))
结果是一个数据框,其中结果不太正确,因为。前一个值带有一个减号(损失),然后即使下一个周期为正,它也会用一个减号显示百分比的变化,但我希望它正确地用一个加号表示。
如果前一个值为负数,则输出符号不正确:
id year profit assets
qwe 2018 0 0
qwe 2019 -197 19
dfe 2018 0 0
dfe 2019 -2 -9
dfg 2018 0 0
dfg 2019 -355 34
它实际上应该是这样的:
id year profit assets
qwe 2018 0 0
qwe 2019 197 19
dfe 2018 0 0
dfe 2019 -2 -9
dfg 2018 0 0
dfg 2019 355 34



