熊猫运行日期信息

时间:2019-09-02 13:22:52

标签: pandas

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

{{1}}

在没有预定义的2019-01-03和2019-01-04的情况下如何自动填充NaT?

1 个答案:

答案 0 :(得分:3)

如果没有重复的排序日期时间,且正确放置的缺少值且第一个没有最后一个值,则可以分配由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