【问题标题】:Pandas interpolate NaN of shifted time series dataPandas 对移位时间序列数据的 NaN 进行插值
【发布时间】: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


    【解决方案1】:

    我相信这是因为空值位于数据帧的开头,因此插值没有值可以插值。在这种情况下,您需要执行 外推,pandas 没有内置方法。有关详细信息,请参阅此线程。

    Extrapolate Dataframe

    【讨论】:

      猜你喜欢
      • 2012-11-06
      • 2018-04-01
      • 1970-01-01
      • 2018-02-02
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      相关资源
      最近更新 更多