【发布时间】:2018-08-06 12:54:07
【问题描述】:
我有一个如下所示的数据框:
A B
2010-01-01 6.5 3.2
2010-02-01 7.2 np.Nan
2010-03-01 8.1 np.Nan
2010-04-01 4.3 5.6
2010-05-01 3.7 6.1
我想上采样到天数并转发填充值。但在df['B'] 的情况下,我希望前向填充到np.Nan 值开始的stop。我正在寻找以下内容:
A B
2010-01-01 6.5 3.2
2010-01-02 6.5 3.2
....
2010-01-31 6.5 3.2
2010-02-01 7.2 np.Nan
2010-02-02 7.2 np.Nan
....
2010-02-28 7.2 np.Nan
2010-03-01 8.1 np.Nan
2010-03-02 8.1 np.Nan
....
2010-03-31 8.1 np.Nan
2010-04-01 4.3 5.6
2010-04-02 4.3 5.6
....
2010-04-30 4.3 5.6
2010-05-01 3.7 6.1
2010-05-02 3.7 6.1
....
2010-05-31 3.7 6.1
如果我应用以下代码:
df['A'] = df['A'].resample('D').ffill()
df['B'] = df['B'].resample('D').ffill()
我的结果如下所示:
A B
2010-01-01 6.5 3.2
2010-01-02 6.5 3.2
....
2010-01-31 6.5 3.2
2010-02-01 7.2 3.2
2010-02-02 7.2 3.2
....
2010-02-28 7.2 3.2
2010-03-01 8.1 3.2
2010-03-02 8.1 3.2
....
2010-03-31 8.1 3.2
2010-04-01 4.3 5.6
2010-04-02 4.3 5.6
....
2010-04-30 4.3 5.6
2010-05-01 3.7 6.1
2010-05-02 3.7 6.1
....
2010-05-31 3.7 6.1
df['B'] 填充了从2010-01-01 到2010-03-31 的3.2 值,而不是在2010-01-31 处“停止”并保留从2010-02-01 到2010-03-31 的np.Nan。
我知道我可以使用非常混乱的迭代过程来做到这一点。但是有没有更简单的方法可以做到这一点,我没有看到?
谢谢。
【问题讨论】:
-
fillna 会起作用吗?回复:stackoverflow.com/questions/28136663/…
标签: python pandas time-series resampling