python - df.loc 过滤不适用于 None 值

标签 python python-2.7 pandas

为什么当过滤器为 Project ID == None 时此过滤不起作用?我还注意到 is None 而不是 == None 返回 KeyError: False

import pandas as pd
df = pd.DataFrame(data = [['Project1', 'CT', 800], [None, 3, 1000], ['Project3', 'CA', 20]], columns=['Project ID', 'State', 'Cost'])

print df.loc[df['Project ID'] == 'Project1'].values
print df.loc[df['Project ID'] == None].values

输出:

[['Project1' 'CT' 800L]]
[]

最佳答案

你必须为此使用isnull:

In [3]:

df[df['Project ID'].isnull()]
Out[3]:
  Project ID State  Cost
1       None     3  1000

或者使用apply:

In [5]:

df.loc[df['Project ID'].apply(lambda x: x is None)]
Out[5]:
  Project ID State  Cost
1       None     3  1000

关于python - df.loc 过滤不适用于 None 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31732415/

相关文章:

python - Pandas 用正则表达式将列表分成几列

python - 使用 pywinauto 从 TreeView 中选择子项

python - 我如何在 Pandas 中其他两个单元格相等的情况下转发 na?

python - 使用 python 进行 Modelica 参数研究

Python:如何正确使用外部函数

python-2.7 - selenium firefox 中的 python 代理 headless 不工作

django - Django Ckeditor 的 Youtube 插件已更新

python - 基于其中一列的 pandas DataFrame 子图的 Matplotlib axvspan 着色

Python Dataframe 在将多个列值与一个值进行比较后删除行

python - 从 Pandas Dataframe 列中提取字符串形式的 JSON 对象列表