當將日常數據(例如,每日價格指數爲16:00)重新索引數據時,如果某一天16:00時間戳沒有1分鐘的數據,我們會想要從最後一個非空的1分鐘數據轉發填充。在下面的情況下,13日16:00之前沒有1分鐘的數據,最後1分鐘的數據來自10日。重新索引時填充方法的功能是什麼?
當使用reindex與method ='ffill'時,不會期望下面的代碼在16:00在13日填寫值嗎?然而,檢查daily1顯示它缺少。
import pandas as pd
import numpy as np
hf_index = pd.date_range(start='2013-05-09 9:00', end='2013-05-13 23:59', freq='1min')
hf_prices = np.random.rand(len(hf_index))
hf = pd.DataFrame(hf_prices, index=hf_index)
hf.ix['2013-05-10 18:00':'2013-05-13 18:00',:]=np.nan
hf.plot()
ind_daily = pd.date_range(start='2013-05-09 16:00', end='2013-05-13 16:00', freq='B')
print(ind_daily.values)
daily1 = hf.reindex(index=ind_daily, method='ffill')
填補作爲一個(或者說我)所期望的,我需要這樣做:
daily2 = daily1.fillna(method='ffill')
如果是這樣的話,什麼是重新索引實際上做的填充方法。我只是從熊貓文檔中看不清楚。在我看來,我不應該這樣做。
嗯。我同意這是意想不到的行爲,可能是一個錯誤。另外,在此期間可以幫助您,使用日期時間索引的數據[resample](http://pandas.pydata。org/pandas-docs/dev/generated/pandas.DataFrame.resample.html)通常是比reindex更好的選擇。尤其要注意關鍵字參數''label''和''close'',這可能與你的問題有關。 –
@ user915否則,如何將數據框重新索引到某個其他頻率,同時仍將缺失值視爲缺失值? –
@runnerup通過使用method = None? – user915