我正在尝试使用pandas pct_change作为运行百分比更改。即作为第一行的百分比变化的每一行。当它被使用时,pct_change会提供NAs,直到满足该周期(比如10)。有没有办法覆盖NAs?(不寻找fill方法,因为它填充集合中的空数据,我希望在pct_change数据本身中填充NAs )
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
谢谢
发布于 2020-08-08 13:54:45
只需将第一行的值复制到临时列中,然后自己计算即可。
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
https://stackoverflow.com/questions/63304813
复制相似问题