为熊猫数据框中的日期时间序列的缺失值插入行

问题描述 投票:0回答:1

我有一些时间序列,如果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

没有错误消息。怎么了?

python pandas datetime resampling
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.