我有一个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
我尝试将lambda与apply一起使用,但是在缺少其中一个数据时遇到问题。
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
关于python - 想要通过平均其他传感器来代替NaN,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57645418/