在pd.date_range中填写缺少的日期/时间

时间:2017-01-19 19:23:37

标签: python pandas

我有一列数据如下所示: enter image description here

我想设定整个月的范围:

rng = pd.date_range('2016-09-01 00:00:00', '2016-09-30 23:59:58', freq='S')

但我的数据栏(上图)缺少几个小时,我不确定在哪里(因为我的数据是200万行。

我尝试使用reindex命令,但它似乎用零填充了所有内容。

我使用的代码如下:

df = pd.DataFrame(df_csv)
rng = pd.date_range('2016-09-01 00:00:00', '2016-09-30 23:59:58', freq='S')
df = df.reindex(rng,fill_value=0.0)

如何在不填写0?

的情况下正确填写缺失的日期/时间

1 个答案:

答案 0 :(得分:3)

我认为您首先需要来自date列的set_index,然后才能使用reindex

#cast column date if dtype is not datetime
df.date = pd.to_datetime(df.date)
df = df.set_index('date').reindex(rng,fill_value=0.0)

您获得了所有NaN个值,因为int索引重新索引datetime值(使用fill_value=0.0后所有NaN被替换为0.0 )。

此外,如果对列date进行排序,您可以使用更通用的解决方案来选择列date的第一个和最后一个值:

start_date = df.date.iat[0]
end_date = df.date.iat[-1]
rng = pd.date_range(start_date, end_date, freq='S')