【发布时间】:2021-02-18 20:26:27
【问题描述】:
正如标题所示,我每小时的 df 看起来像这样:
date_time traffic_volume
date_time
2012-10-02 09:00:00 2012-10-02 09:00:00 5545.0
2012-10-02 10:00:00 2012-10-02 10:00:00 4516.0
2012-10-02 11:00:00 2012-10-02 11:00:00 NaN
2012-10-02 12:00:00 2012-10-02 12:00:00 NaN
2012-10-02 13:00:00 2012-10-02 13:00:00 NaN
2012-10-02 14:00:00 2012-10-02 14:00:00 NaN
2012-10-02 15:00:00 2012-10-02 15:00:00 5584.0
2012-10-02 16:00:00 2012-10-02 16:00:00 6015.0
我使用的大多数 NaN 估算值
df['traffic_volume'] = df['traffic_volume'].interpolate(method='time')
现在的问题是,对于时间序列的某个子集(剩余的 NaN),我想通过输入当天但去年的相同值来进行估算。 我用过
df['traffic_volume'] = df.apply(lambda x: df.loc[ x['date_time'] + pd.offsets.DateOffset(years=-1)]['traffic_volume'] if x['traffic_volume']==np.NaN else x['traffic_volume'], axis=1)
代码行运行了,但我的 NaN 没有被估算。我的问题是为什么?如果有更好的方法是什么?
谢谢。
P.S 我不想使用 bfill、ffill 或 interpolate 的原因是因为 NaN 的序列太多,数据失去了粒度。
【问题讨论】:
标签: python-3.x pandas time-series