首页 > 解决方案 > 在未捕获数据的情况下,将具有 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 周,以便数据框反映到今天为止的几周。在某些情况下,我需要添加几个星期的零,所以我正在寻找一个有效的解决方案。有人知道这样做的好方法吗?

标签: pythonpandasdataframetime-seriespandas-groupby

解决方案


您可以使用重新索引输出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 |

推荐阅读