我正在使用pandas在Python中使用DataFrame,并且我正在try 应用多个条件来根据多个列的温度值过滤行.然而,在应用我的条件并使用dropna()
后,即使我希望一些数据满足这些条件,我最终得到零行.
目标是与环境温度+40 C进行比较,如果值大于此,则用NaN替换.否则,保留原来的价值.
以下是我的DataFrame示例以及我正在应用的条件:
data = {
'Datetime': ['2022-08-04 15:06:00', '2022-08-04 15:07:00', '2022-08-04 15:08:00',
'2022-08-04 15:09:00', '2022-08-04 15:10:00'],
'Temp1': [53.4, 54.3, 53.7, 54.3, 55.4],
'Temp2': [57.8, 57.0, 87.0, 57.2, 57.5],
'Temp3': [59.0, 58.8, 58.7, 59.1, 59.7],
'Temp4': [46.7, 47.1, 80, 46.9, 47.3],
'Temp5': [52.8, 53.1, 53.0, 53.1, 53.4],
'Temp6': [50.1, 69, 50.3, 50.3, 50.6],
'AmbientTemp': [29.0, 28.8, 28.6, 28.7, 28.9]
}
df1 = pd.DataFrame(data)
df1['Datetime'] = pd.to_datetime(df1['Datetime'])
df1.set_index('Datetime', inplace=True)
Code:
temp_cols = ['Temp1', 'Temp2', 'Temp3', 'Temp4', 'Temp5', 'Temp6']
ambient_col = 'AmbientTemp'
condition = (df1[temp_cols].lt(df1[ambient_col] + 40, axis=0))
filtered_df = df1[condition].dropna()
print(filtered_df.shape)
Response:
(0, 99)
Problem:
尽管期望满足条件的有效数据,但在应用过滤器并删除NaN值后,生成的DataFrame仍为空.是什么导致了此问题?如何纠正它?