我有一個時間序列資料框,其標題是“日期”和“值”
示例資料框:
Date Value
2019-10-01 46486868.0
2019-11-01 36092742.0
2019-12-01 32839185.0
不幸的是,日期列缺少一些月份。例如,資料集應該是 2001-2010 年的月度資料集,但它每年都缺少幾個隨機月份。
由于我正在制作時間序列模型,因此我不能丟失日期,因此我一直在嘗試找出一種方法來包含相同的日期。
我嘗試按如下方式創建一個熊貓物件:
df_date = pd.date_range(start='1/1/2001', end='11/1/2010', freq='MS')
type(df_date)
pandas.core.indexes.datetimes.DatetimeIndex
但這并沒有與熊貓資料框合并。它給出了以下錯誤:
TypeError: Can only merge Series or DataFrame objects, a <class 'pandas.core.indexes.datetimes.DatetimeIndex'> was passed
手頭的任務是通過將其與另一個具有所有日期和缺失值的資料框匹配ffil或以某種方式在現有資料框中包含缺失值來獲取時間跨度中每個月的所有日期。
有沒有辦法解決這個問題?
uj5u.com熱心網友回復:
設定Date為索引并重新索引它df_date:
df_date = pd.date_range(start='1/1/2019', end='11/1/2020', freq='MS')
df = df.set_index('Date').reindex(df_date)
輸出:
>>> df
Value
2019-01-01 NaN
2019-02-01 NaN
2019-03-01 NaN
2019-04-01 NaN
2019-05-01 NaN
2019-06-01 NaN
2019-07-01 NaN
2019-08-01 NaN
2019-09-01 NaN
2019-10-01 46486868.0
2019-11-01 36092742.0
2019-12-01 32839185.0
2020-01-01 NaN
2020-02-01 NaN
2020-03-01 NaN
2020-04-01 NaN
2020-05-01 NaN
2020-06-01 NaN
2020-07-01 NaN
2020-08-01 NaN
2020-09-01 NaN
2020-10-01 NaN
2020-11-01 NaN
uj5u.com熱心網友回復:
pd.date_range回傳一個索引物件。您可以使用它創建一個日期框,如下所示:
df_date = pd.DataFrame({'Date':pd.date_range(start='1/1/2019', end='1/1/2020', freq='MS') })
然后你可以合并
df_date.merge(df, on='Date', how='left')
輸出:
Date Value
0 2019-01-01 NaN
1 2019-02-01 NaN
2 2019-03-01 NaN
3 2019-04-01 NaN
4 2019-05-01 NaN
5 2019-06-01 NaN
6 2019-07-01 NaN
7 2019-08-01 NaN
8 2019-09-01 NaN
9 2019-10-01 46486868.0
10 2019-11-01 36092742.0
11 2019-12-01 32839185.0
12 2020-01-01 NaN
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/418941.html
標籤:
