pandas 保留NaN值并删除非缺失值

bnl4lu3b  于 2023-04-04  发布在  其他
关注(0)|答案(3)|浏览(169)

我有一个DataFrame,当一个特定的变量有一个NaN值时,我想保留行,并删除非缺失值。
示例:

ticker  opinion  x1       x2  
aapl    GC       100      70  
msft    NaN      50       40  
goog    GC       40       60  
wmt     GC       45       15  
abm     NaN      80       90

在上面的DataFrame中,我想删除所有没有丢失意见的观察结果(因此,我想删除代码为aapl, goog, and wmt的行)。
pandas中有没有与.dropna()相反的东西?

kzipqqlq

kzipqqlq1#

在列上使用pandas.Series.isnull查找缺失值并使用结果建立索引。

import pandas as pd

data = pd.DataFrame({'ticker': ['aapl', 'msft', 'goog'],
                     'opinion': ['GC', nan, 'GC'],
                     'x1': [100, 50, 40]})

data = data[data['opinion'].isnull()]
lkaoscv7

lkaoscv72#

或者,您可以使用query

In [4]: df.query('opinion != opinion')
Out[4]: 
  ticker opinion  x1  x2
1   msft     NaN  50  40
4    abm     NaN  80  90

这是因为 NaN 不等于 NaN

In [5]: np.nan != np.nan
Out[5]: True
2nc8po8w

2nc8po8w3#

这不是OP所问的,但是如果你在这里是为了求df.dropna()的逆,那么df.keepna()的等价物是:

df[~df.index.isin(df.dropna().index)]

相关问题