【发布时间】:2021-07-14 01:47:03
【问题描述】:
当我移动我的时间序列数据时,我在数据框中得到了一些 NaN。可以用数字替换这些 NaN 的唯一插值方法是 'linear'。 NaN 被替换为相同的数字,这是不可取的。
有什么方法可以改用 'cubic' 或 'quadratic' 等不同的方法吗?
import numpy as np
import pandas as pd
# original data
df = pd.DataFrame()
np.random.seed(0)
days = pd.date_range(start='2015-01-01', end='2015-01-10', freq='1D')
df = pd.DataFrame({'Date': days, 'col1': np.random.randn(len(days))})
df = df.set_index('Date')
# add lags
df['lag1'] = df['col1'].shift(1)
df['lag3'] = df['col1'].shift(3)
print(df)
def interp(dfObj):
if dfObj.isna().sum()>0:
dfObj0 = dfObj.interpolate(method='linear', limit_direction='both')
return dfObj0
else:
return dfObj
df['lag1'] = interp(df['lag1'])
df['lag3'] = interp(df['lag3'])
print(df)
【问题讨论】:
标签: python pandas dataframe interpolation