删除NaN但不保留

时间:2020-04-16 11:01:49

标签: python pandas dataframe

None和NaN值都表示相同的含义,但是在我的数据框中,我想保留无值的行,而保留NaN值的行。

让我们说我有以下数据框df。

df

Col_1   Col_2  Col3
None     None   None
1         2      3 
NaN       NaN    NaN

当我使用NaN删除Values时,我想得到类似的东西。

df.dropna()

Col_1  Col_2   Col_3
None    None    None 
1       2        3

但是它同时降低了None和NaN值。

但是为了保持None值,我尝试用

之类的其他值填充

df['Col_1].replace({None: 'Empty'}, inplace=True)

它正在填充,包括NaN值。

我的问题是,有没有办法用NaN删除值并保留值None

2 个答案:

答案 0 :(得分:1)

您可以将值设置为字符串,并比较不等于NaNnan的值:

df = df[~df.astype(str).isin(['NaN', 'nan']).any(axis=1)]
print (df)
  Col_1 Col_2  Col3
0  None  None  None
1     1     2     3

答案 1 :(得分:0)

使得这一点有些棘手的是,熊猫在很大程度上将NoneNaN一样对待,使得isnadropna在这里是错误的方法,因为包含{{ 1}}也将被设置为None。您可以做的是使用基础的numpy数组,这使我们能够与True进行比较:

None
相关问题