如何解决Python熊猫:用时间序列替换缺失的值
我目前正在处理一个例程,以处理来自不同气象站的气象数据。不幸的是,有时会丢失数据。我编写了一个例程,将所有站点的数据合并到一个数据帧中,并实现了“ NaN_Flag”列,该列显示了某个时间点的丢失数据。
现在的计划是用附近电台的数据填补那些数据空白。对于温度和湿度插值是可能的,但是取决于间隙的大小并不是很理想。 对于下雨事件,插值没有任何意义。
第一列是包含日期,时间和位置的索引列。现在,我正在寻找一种解决方案,如果“ NaN_Flag”显示为“ 1”,则可以填充另一个位置(相同时间)的测量数据。
因此,在下面的简化示例中,我希望Location1的01-01-01 00:20:00的数据集 会自动被位置2的相同日期时间的数据替换。因此,每个位置都有一个“备份”位置,并且每次“ NaN_Flag”显示“ 1”时,数据都会自动替换为适当的备份数据。 有人知道如何实现吗?
DATETIME_UTC_LOCATION DATETIME_UTC LOCATION TEMP PLUV HUM NaN_FLAG
2020-01-01 00:00:00 Location1 2020-01-01 00:00:00 Location1 5.25 0.0 87.3 0
2020-01-01 00:10:00 Location1 2020-01-01 00:10:00 Location1 6.12 0.1 85.0 0
2020-01-01 00:20:00 Location1 2020-01-01 00:20:00 Location1 1
2020-01-01 00:00:00 Location2 2020-01-01 00:00:00 Location2 5.12 0.0 88.9 0
2020-01-01 00:10:00 Location2 2020-01-01 00:10:00 Location2 6.25 0.1 84.3 0
2020-01-01 00:20:00 Location2 2020-01-01 00:20:00 Location2 6.75 0.2 82.5 0
解决方法
如果数据框具有与此格式相同的格式:
import pandas as pd
import numpy as np
df = pd.DataFrame(data={'month': ["Jan","Feb","Mar","Jan","Mar"],'station': ["station_1","station_1","station_2","station_2"],'values': [3.2,np.nan,4.1,3.6,5.8,4.2]}).set_index('month')
输出:
station values
month
Jan station_1 3.2
Feb station_1 NaN
Mar station_1 4.1
Jan station_2 3.6
Feb station_2 5.8
Mar station_2 4.2
您可以使用:
df.loc[df['station'] == "station_1"] = df.loc[df['station'] == "station_1"].fillna(df.loc[df['station'] == "station_2"])
用站点1的NaN值替换站点2的等效值。 “等价”是指“月”索引中的匹配。
输出:
station values
month
Jan station_1 3.2
Feb station_1 5.8
Mar station_1 4.1
Jan station_2 3.6
Feb station_2 5.8
Mar station_2 4.2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。