繁体   English   中英

Python 数据框根据不工作的条件排除行

[英]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])

回复评论:

有两个原因

  1. 你不能像在你的方法中那样比较 NaN:
    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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM