在 pandas 数据框中插入日期时间序列缺失值的行

insert rows for missing values of datetime series in pandas dataframes

我有一些时间序列,以1分钟的时间步长记录,没有记录,如果x的值为0。 数据文件如下所示:

Date;Time;x 20.02.2020;00:00:00;0.1 20.02.2020;00:03:00;0.4 20.02.2020;00:04:00;0.3 20.02.2020;00:05:00;0.3 20.02.2020;00:07:00;0.2

我想填写 x=0.0 的缺失记录。预期结果是:

Date;Time;x 20.02.2020;00:00:00;0.1 20.02.2020;00:01:00;0.0 20.02.2020;00:02:00;0.0 20.02.2020;00:03:00;0.4 20.02.2020;00:04:00;0.3 20.02.2020;00:05:00;0.3 20.02.2020;00:06:00;0.0 20.02.2020;00:07:00;0.2

我试过了:

import pandas as pd

with open('data.csv') as csv_file:
    df = pd.read_csv(csv_file, delimiter=';',parse_dates={'datetime': ['Date', 'Time']})
df.set_index(['datetime'])
df.asfreq(freq='1Min', fill_value=0.0)

我得到:

datetime x 1970-01-01 1970-01-01 0.0

没有错误信息。怎么了?

因为你的set_index操作没有发生,最好是链接你的方法:

df.set_index('datetime').asfreq('1min', fill_value=0).reset_index()

resample:

df.set_index('datetime').resample('1min').first().fillna(0).reset_index()
             datetime    x
0 2020-02-20 00:00:00  0.1
1 2020-02-20 00:01:00  0.0
2 2020-02-20 00:02:00  0.0
3 2020-02-20 00:03:00  0.4
4 2020-02-20 00:04:00  0.3
5 2020-02-20 00:05:00  0.3
6 2020-02-20 00:06:00  0.0
7 2020-02-20 00:07:00  0.2

或修复您自己的代码:

df = df.set_index('datetime')
df.asfreq(freq='1Min', fill_value=0)