我有以下熊猫df,以日期为索引:
S&P500 Europe Japan
Date
2002-12-23 0.247683 0.245252 0.203916
2002-12-24 0.241855 0.237858 0.200971
2002-12-26 0.237095 0.230614 0.197621
2002-12-27 0.241104 0.250323 0.191855
我需要为每个缺失的日期添加新行(考虑df的第一个和最后一个日期之间的日期)。对于新行,列中的值应该向前填充。这是预期的输出(添加了2002-12-25):
S&P500 Europe Japan
Date
2002-12-23 0.247683 0.245252 0.203916
2002-12-24 0.241855 0.237858 0.200971
2002-12-25 0.241855 0.237858 0.200971
2002-12-26 0.237095 0.230614 0.197621
2002-12-27 0.241104 0.250323 0.191855
我创建了一个列表,其中包含第一个日期和最后一个日期之间的所有日期:
min_date=df.index.min()
max_date=df.index.max()
date_list=pd.date_range(min_date,max_date-timedelta(days=1),freq='d')
有没有办法检查"date_list"的日期?不在df索引中并相应地添加行?新行的列应该用NaN填充,以便我以后可以向前填充它们。由于
您可以使用.reindex
+.ffill()
:
min_date = df.index.min()
max_date = df.index.max()
date_list = pd.date_range(min_date, max_date, freq="D")
df = df.reindex(date_list).ffill()
print(df)
打印:
S&P500 Europe Japan
2002-12-23 0.247683 0.245252 0.203916
2002-12-24 0.241855 0.237858 0.200971
2002-12-25 0.241855 0.237858 0.200971
2002-12-26 0.237095 0.230614 0.197621
2002-12-27 0.241104 0.250323 0.191855
OR:使用method=
参数
df = df.reindex(date_list, method="ffill")