我想设定整个月的范围:
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?
的情况下正确填写缺失的日期/时间答案 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')