我有一些时间序列,如果x的值为0,则以1分钟的时间步长记录而没有记录。数据文件如下所示:
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)