python - 在 pandas 数据框中插入缺少的工作日并用 NaN 填充它们

标签 python python-2.7 pandas datetimeindex

我正在尝试在时间序列数据框中插入缺少的工作日

import pandas as pd
from pandas.tseries.offsets import *
df = pd.DataFrame([['2016-09-30', 10, 2020], ['2016-10-03', 20, 2424], ['2016-10-05', 5, 232]], columns=['date', 'price', 'vol']).set_index('date')
df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')

数据如下所示:

Out[300]: 
            price   vol
date                   
2016-09-30     10  2020
2016-10-03     20  2424
2016-10-05      5   232

我可以使用 pd.date_range() 轻松创建一系列工作日

pd.date_range('2016-09-30', '2016-10-05', freq=BDay())
Out[301]: DatetimeIndex(['2016-09-30', '2016-10-03', '2016-10-04', '2016-10-05'], dtype='datetime64[ns]', freq='B')

基于该 DateTimeIndex,我想在我的 df 中添加缺失的日期,并用 NaN 填充列值,这样我得到:

Out[300]: 
            price   vol
date                   
2016-09-30     10  2020
2016-10-03     20  2424
2016-10-04     NaN  NaN
2016-10-05      5   232

有没有简单的方法可以做到这一点?谢谢!

最佳答案

或者,您可以使用pandas.DataFrame.resample() ,为工作日指定“B”,无需指定开始或结束日期序列,只要数据框维护日期时间索引

df = df.resample('B').sum()

#             price     vol
# date                     
# 2016-09-30   10.0  2020.0
# 2016-10-03   20.0  2424.0
# 2016-10-04    NaN     NaN
# 2016-10-05    5.0   232.0

关于python - 在 pandas 数据框中插入缺少的工作日并用 NaN 填充它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39877184/

相关文章:

pandas - 将多时间格式化字符串转换为秒(pandas)

python - 在 ST2 中导入 Pandas 时出现 Numexpr 错误

python - 在python中分割一个字符串

python - 使用分层索引更改数据框中的数据

python - 映射到 pandas 中的子字符串键

python - 休息 : inline links with arbitrary titles?

Python提示用户有回声和密码没有回声

python - Python 2.7 中有什么类似于 Go 的 `time.Tick` 或 Netty 的 `HashedWheelTimer` 吗?

python-2.7 - 我的 Apache WSGI Flask 网络应用程序无法导入其内部 python 模块

python - 如何将 Pandas DataFrame 转换为三层嵌套字典?