我正在处理从Adafruit IO获取的数据帧,可悲的是,我的一些数据来自我的项目发生故障的时候,因此某些值仅等于NaN。
我试图通过键入以下代码行将其删除:
onlyValidData=temp_data.mask(temp_data['value'] =='NaN')
onlyValidData
这是从Adafruit IO Feed中获取的数据,被熊猫分析了,我也尝试过使用“ where”功能,但是它不起作用
我的整个代码是
import pandas as pd
temp_data = pd.read_json('https://io.adafruit.com/api/(...)')
light_data = pd.read_json('https://io.adafruit.com/api/(...)')
temp_data['created_at'] = pd.to_datetime(temp_data['created_at'], infer_datetime_format=True)
temp_data = temp_data.set_index('created_at')
light_data['created_at'] = pd.to_datetime(light_data['created_at'], infer_datetime_format=True)
light_data = light_data.set_index('created_at')
tempVals = pd.Series(temp_data['value'])
lightVals = pd.Series(light_data['value'])
onlyValidData=temp_data.mask(temp_data['value'] =='NaN')
onlyValidData
由于某种原因,输出是我的所有数据,但应该只是有效值。
答案 0 :(得分:0)
嘿,我认为这里的问题是您正在寻找等于字符串'NaN'的值,而实际的NaN值不是字符串,或者更确切地说不是任何东西。
尝试使用:
onlyValidData = temp_data.mask(temp_data['value'].isnull())
编辑:删除行,而不是将该行中的所有值标记为NaN:
onlyValidData = temp_data.dropna()