我正在尝试将熊猫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
谢谢
答案 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