重新索引为缺失的值提供值,而不是NaN。

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

我想用缺失的记录(或行)来完成我的%湿度时间序列。传感器被设计成每15分钟记录一个平均值,所以这是我的目标频率。这里的一个站的例子(不是最好的差距......),但我有36站的测量,6个参数和超过24 000记录,每个均匀。

我选择了日期时间和%湿度的列,例如 。

humdt = data["la-salade"][["datetime","humidite"]]

               datetime  humidite
0   2019-07-09 08:30:00        87
1   2019-07-09 11:00:00        87
2   2019-07-09 17:30:00        82
3   2019-07-09 23:30:00        80
4   2019-07-11 06:15:00        79
5   2019-07-19 14:30:00        39

我将日期时间设置为索引:(到目前为止,它的工作原理)。

humdt["datetime"] = pd.to_datetime(humdt["datetime"])
humdt = humdt.set_index("datetime",drop=True)

                     humidite
datetime
2019-07-09 08:30:00        87
2019-07-09 11:00:00        87
2019-07-09 17:30:00        82
2019-07-09 23:30:00        80
2019-07-11 06:15:00        79
2019-07-19 14:30:00        39

除此之外,我准备了一个与我的期望值相匹配的日期时间范围(15分钟的频率)。

date_rng = pd.period_range(start=debut, end=fin, freq='15min').strftime('%Y-%m-%d %H:%M:%S')
date_rng = pd.DataFrame(date_rng)
date_rng.columns = ["datetime"]

然后,我使用这个范围来重新索引我的湿度值(当缺失时,期望NaN):

humdt = humdt.reindex(pd.DatetimeIndex(date_rng["datetime"]))

                     humidite
datetime
2019-07-09 08:30:00      87.0
2019-07-09 08:45:00      88.0
2019-07-09 09:00:00      88.0
2019-07-09 09:15:00      88.0
2019-07-09 09:30:00      89.0
2019-07-09 09:45:00      89.0
2019-07-09 10:00:00      88.0
2019-07-09 10:15:00      88.0
2019-07-09 10:30:00      88.0
2019-07-09 10:45:00      88.0
2019-07-09 11:00:00      87.0

结果,我得到的湿度值无处可寻......甚至不是一个经典的线性插值(例如:08H30的87%和11H00的87%之间)。请帮助我,我不知道这是怎么回事...... (也试过合并和重新取样,因为这里的行为不符合预期)。谢谢你!我想完成我的时间序列。

python pandas interpolation missing-data reindex
1个回答
0
投票

你可以添加属性 fill_value 到df.reindex。

humdt = humdt.reindex(pd.DatetimeIndex(date_rng["datetime"]), fill_value=np.nan)

这将用NaN填充新的值

© www.soinside.com 2019 - 2024. All rights reserved.