熊猫的替代品pct_change

时间:2020-08-07 15:27:23

标签: pandas

我正在尝试将熊猫pct_change用作运行百分比变化。即每一行占第一行的百分比变化。使用时,pct_change会给出NA,直到满足该期限为止(例如10)。有没有办法覆盖NA? (不是在寻找填充方法来填充集合中的空数据,而是在pct_change数据本身中填充NA)

In [2]: import pandas as pd

In [3]: import datetime as dt

In [4]: df = pd.DataFrame([2,2.5,3.5,5],[dt.date(2020,8,1),dt.date(2020,8,2),dt.date(2020,8,3),dt.date(2020,8,4)])

In [5]: df[1] = df[0].pct_change(3)

In [6]: df
Out[6]: 
              0    1
2020-08-01  2.0  NaN
2020-08-02  2.5  NaN
2020-08-03  3.5  NaN
2020-08-04  5.0  1.5

我想要:

8-2填充为.25-(2.5-2)/ 2&

8-3填充为.75-(3.5-2)/ 2

谢谢

1 个答案:

答案 0 :(得分:0)

只需将第一行中的值复制到临时列中,然后自己进行计算即可。

df = pd.DataFrame([2,2.5,3.5,5],[dt.date(2020,8,1),dt.date(2020,8,2),dt.date(2020,8,3),dt.date(2020,8,4)])
df = df.assign(
    first=df.iloc[0,0],
    pct_cng=lambda dfa: abs(dfa[0] - dfa["first"])/2
).drop("first", axis=1)

输出

              0  pct_cng
2020-08-01  2.0     0.00
2020-08-02  2.5     0.25
2020-08-03  3.5     0.75
2020-08-04  5.0     1.50