在 Pandas 中处理 NaN 值

3

我有一个数据框,我想返回这个数据框的一个子集(新副本而不是引用),以执行一些操作。然而,我发现无法根据我需要的条件进行过滤。

我需要按照以下三个条件进行筛选:

1. df['A'] != NaN
2. df['B'] == 'X' | df['B'] == NaN
3. df['C'] == NaN

目前我正在为标准1做这件事,但我在如何包含标准2和3方面有些困惑。

    filter_data = df.loc[(df['A'].dropna)] 

有效地检查Python、NumPy和Pandas中任意对象是否为NaN - EdChum
2个回答

4

需要针对 NaN 的特殊功能 - isnullnotnull

df['A'].notnull()
(df['B'] == 'X') | (df['B'].isnull())
df['C'].isnull()

无法在 df.eval() 中使用 'NaN' 吗? - Mohammad Yusuf
我认为最好使用高度优化的 Pandas 功能。 - jezrael

2
您可以使用query查找null或非null值。Nulls往往不等于自身。 df.dropna(subset=['A']) <=> df.query('A == A') <=> df[df.A.notnull()]
使用query的三个筛选器:
  1. df.query('A == A')df.dropna(subset=['A'])df[df.A.notnull()]
  2. df.query('B == "X" | B != B')df.query('B == "X" or B != B')
  3. df.query('C != C')df[df.C.isnull()]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接