python - 在未捕获数据的情况下,将具有 0 值的周添加到具有时间序列数据的 pandas 数据帧中的周
问题描述
我有按周分组的交易数据。但是,我不能保证每周都有数据。Group by 在第一周和最后一周之间以 0 数量填充缺失的周方面做得很好。但是,我需要用截至本周的值填充我的数据框。
我的数据存储在日期框架 dfShipsInScope 中,并且我已使用以下代码将我的数据转换为每周一次:
dfShipsInScope['START_TIME'] = pd.to_datetime(dfShipsInScope['START_TIME'])
dfShipsInScope=dfShipsInScope[['START_TIME','X']].groupby('START_TIME').sum()
dfShipsInScope=dfShipsInScope.resample(rule = 'W-SAT').sum()
dfShipsInScope.index.freq='W-SAT'
这会输出如下内容:
X
START_TIME
2019-09-14 3.000
2019-09-21 0.000
2019-09-28 1.500
我需要在 X=0 的情况下添加 2019-10-05 和 2019-10-12 周,以便数据框反映到今天为止的几周。在某些情况下,我需要添加几个星期的零,所以我正在寻找一个有效的解决方案。有人知道这样做的好方法吗?
解决方案
您可以使用重新索引输出pd.date_range
在:
df.reindex(
pd.date_range(start=df.index.min(),
end=pd.to_datetime('today') + pd.offsets.Week(),
freq='W-SAT')).fillna(0)
出去:
| | X |
|------------|-----|
| 2019-09-14 | 3.0 |
| 2019-09-21 | 0.0 |
| 2019-09-28 | 1.5 |
| 2019-10-05 | 0.0 |
| 2019-10-12 | 0.0 |
推荐阅读
- pdf - Netsuite Advanced PDF 可以在滚轮打印机的无尽页面中使用吗?
- php - 无法从控制器获取输入值,Opencart:3
- ramda.js - 如何使用 Ramda 执行数组中的表达式字符串
- c++ - 是什么导致 WSHStringToAddress() 与 Widows Qt 发生崩溃?
- javascript - 如何在 Redux Store 中按 id 存储项目
- timeout - 本机 Apple Pay 超时
- java - 是否“在警告级别使用 slf4j 记录”,阻止运行“logger.debug(...”
- python - 如何创建多个具有不同名称的文件并在 Python 中写入它们
- python - 计算二进制数末尾尾随 0 数量的有效代码
- python - 检查字符串是否包含所有元音的函数