[英]Python dataframe exclude rows based on condition not working
我有一个数据帧,它是从数据帧和数组连接起来的。 不知何故,它继承了原始数据框的索引 - 因此我试图根据不应包含缺失值的列之一排除行。 如果我查看我的数据框,它显示如下:
print(model_data2['is_62p_days_overdue'][0:11])
现在,当我运行时:
print(model_data2['is_62p_days_overdue'].where(model_data2['is_62p_days_overdue'] != np.nan)[0:11])
我得到完全相同的输出。 当我运行时:
print(model_data2['is_62p_days_overdue'].where(model_data2['is_62p_days_overdue'] == np.nan)[0:11])
我错过了什么? 这让我发疯! 我试过重置索引 - 但这也没有任何作用。
IUC:
取而代之的是:
print(model_data2['is_62p_days_overdue'].where(model_data2['is_62p_days_overdue'] != np.nan)[0:11])
尝试使用loc
访问器和notna()
方法:
print(model_data2.loc[model_data2['is_62p_days_overdue'].notna(),'is_62p_days_overdue'][0:11])
回复评论:
有两个原因
model_data2['is_62p_days_overdue'] != np.nan
#this is wrong instead use notna() method
2.您正在使用 where 方法,即使您更正了上述方法,它也会使其返回 NaN:
model_data2['is_62p_days_overdue'].where(model_data2['is_62p_days_overdue'].notna())
在我的代码底部查看“您可能想要查看的#行”
import pandas as pd
import numpy as np
# make a dataset
dict={'is_62p_days_overdue':[0, 0, 0, 0, 0, None, None, 0, None, 0, None]}
data=pd.DataFrame(dict)
print(data)
# append numeric 1~10
data=data.append(pd.DataFrame({'is_62p_days_overdue': list(range(1,10+1))}),ignore_index=True)
data
# rows you may want to see
data.loc[~(data.is_62p_days_overdue.isna())]
您可以使用 .dropna() 删除具有 NaN 值的行。 用这个:
model_data2.dropna(subset = ['is_62p_days_overdue'], inplace = True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.