首页 > 解决方案 > 熊猫中运行日期的填充

问题描述

我有一个包含日期和值列的数据框,如下所示:

date       value
2019-01-01   10
2019-01-02   15
NaT          20
NaT          30
2019-01-05   40
2019-01-06   45

如果没有预定义的 2019-01-03 和 2019-01-04,如何自动填充 NaT?

标签: pandas

解决方案


如果没有具有正确放置的缺失值的重复排序日期时间并且第一个与最后一个值没有缺失,则可以分配回由创建的值date_range

df['date'] = pd.date_range(df['date'].min(), df['date'].max())
print (df)
        date  value
0 2019-01-01     10
1 2019-01-02     15
2 2019-01-03     20
3 2019-01-04     30
4 2019-01-05     40
5 2019-01-06     45

另一个想法是为所有缺失的组创建 timedelta 范围,并添加到最后一个非缺失的日期ffill时间:

m = df['date'].isna()
s = pd.to_timedelta(df[m].groupby(m.ne(m.shift()).cumsum()).cumcount().add(1), unit='d')
df.loc[m, 'date'] = df['date'].ffill() + s
print (df)
        date  value
0 2019-01-01     10
1 2019-01-02     15
2 2019-01-03     20
3 2019-01-04     30
4 2019-01-05     40
5 2019-01-06     45

推荐阅读