Python 3.x 如何用趋向于零的值填充NAN,直到下一个有效值?

Python 3.x 如何用趋向于零的值填充NAN,直到下一个有效值?,python-3.x,pandas,Python 3.x,Pandas,将数据帧df重新采样为: df = pd.DataFrame.from_dict({'2021-03-02': 442, '2021-03-04': 520, '2021-03-09': 390, '2021-03-11': 442, '2021-03-16': 520, '2021-03-23': 520, '2021-03-25': 520, '2021-03-26': 442,}, orient='index',) df.index = pd.to_datetime(df.index)

将数据帧df重新采样为:

df = pd.DataFrame.from_dict({'2021-03-02': 442,
'2021-03-04': 520,
'2021-03-09': 390,
'2021-03-11': 442,
'2021-03-16': 520,
'2021-03-23': 520,
'2021-03-25': 520,
'2021-03-26': 442,}, orient='index',)

df.index = pd.to_datetime(df.index)
df = df.resample('30Min').asfreq()
如何使用与前一个值相比线性趋于零的值填充NAN?图形看起来就像一把锯子

是否有用于此操作的内置方法,或者需要结合使用自定义方法


谢谢您的时间。

此功能没有内置功能。您可以像这样快速创建一个:

# group of rows starting with non-nan
groups = df[0].groupby(df[0].notnull().cumsum())

# output
out = df[0].ffill().mul(1-groups.cumcount()/ groups.transform('size'))

# plot
out.plot()
你会得到:


另一个选项是使用notnull和shift将非nan值之前的nan填充为0,然后进行插值

df.loc[df[0].notnull().shift(-1, fill_value=False), 0] = 0
df[0] = df[0].interpolate()