想通过取其他传感器的平均值来替换 NaN
Want to replace NaN by taking average of other sensors
我有一个 df
来自多个传感器的 DateTimeIndex
(每小时读数)
Time Temp1 Temp2 Temp3 Humidity1 Humidity2
1/2/2017 13:00 31 23 NA 66 48
1/2/2017 14:00 22 NA NA 63 43
1/2/2017 15:00 25 25 21 41 39
我想用 Temp1 和 Temp2 的可用数据替换温度传感器 3 (Temp3) 的缺失值。如果 Temp1 和 Temp2 都不为空,我想取一个平均值。如果只有1个可用,我就取那个值。
预期输出:
Time Temp3
1/2/2017 13:00 27
1/2/2017 14:00 22
1/2/2017 15:00 21
我尝试将 apply 与 lambda 一起使用,但是 运行 当其中一个数据丢失时出现问题。
Df['Temp3'] = Df.apply(
lambda row: (row['Temp1']+row['Temp2'])/2 if np.isnan(row['Temp3'])
else row['Temp3'],
axis=1
)
您可以通过以下方式进行设置:
df.loc[df['Temp3'].isnull(), 'Temp3'] = df.loc[df['Temp3'].isnull(), ['Temp1', 'Temp2']].mean(axis=1)
例如:
>>> df
Temp1 Temp2 Temp3
0 31 23.0 NaN
1 22 NaN NaN
2 25 25.0 21.0
>>> df.loc[df['Temp3'].isnull(), 'Temp3'] = df.loc[df['Temp3'].isnull(), ['Temp1', 'Temp2']].mean(axis=1)
>>> df
Temp1 Temp2 Temp3
0 31 23.0 27.0
1 22 NaN 22.0
2 25 25.0 21.0
我有一个 df
来自多个传感器的 DateTimeIndex
(每小时读数)
Time Temp1 Temp2 Temp3 Humidity1 Humidity2
1/2/2017 13:00 31 23 NA 66 48
1/2/2017 14:00 22 NA NA 63 43
1/2/2017 15:00 25 25 21 41 39
我想用 Temp1 和 Temp2 的可用数据替换温度传感器 3 (Temp3) 的缺失值。如果 Temp1 和 Temp2 都不为空,我想取一个平均值。如果只有1个可用,我就取那个值。
预期输出:
Time Temp3
1/2/2017 13:00 27
1/2/2017 14:00 22
1/2/2017 15:00 21
我尝试将 apply 与 lambda 一起使用,但是 运行 当其中一个数据丢失时出现问题。
Df['Temp3'] = Df.apply(
lambda row: (row['Temp1']+row['Temp2'])/2 if np.isnan(row['Temp3'])
else row['Temp3'],
axis=1
)
您可以通过以下方式进行设置:
df.loc[df['Temp3'].isnull(), 'Temp3'] = df.loc[df['Temp3'].isnull(), ['Temp1', 'Temp2']].mean(axis=1)
例如:
>>> df
Temp1 Temp2 Temp3
0 31 23.0 NaN
1 22 NaN NaN
2 25 25.0 21.0
>>> df.loc[df['Temp3'].isnull(), 'Temp3'] = df.loc[df['Temp3'].isnull(), ['Temp1', 'Temp2']].mean(axis=1)
>>> df
Temp1 Temp2 Temp3
0 31 23.0 27.0
1 22 NaN 22.0
2 25 25.0 21.0