python - 数据框:为缺少的日期添加新行
问题描述
我有以下 pandas 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
或:使用method=
参数
df = df.reindex(date_list, method="ffill")
推荐阅读
- reactjs - 如何将动作列设置为材料ui表ReactJs中的最后一列?
- azure - 连接似乎不适用于 azure
- selenium - 如何跨会话重用驱动程序
- javascript - 生成随机 uuid Javascript
- angular - Mat Sort 标头不对数据进行排序
- reactjs - 用 react-konva 反应 DnD
- javascript - 运行单个 Nightwatchjs 测试的问题
- javascript - 如何在 puppeteer 中使用 for 循环
- javascript - 如何将值作为参数从节点 js 文件发送到电子 main.js 文件的 loadURL()?
- vb.net - 如何在 ToJSON 输出中包含标头信息