df.loc 过滤不适用于 None 值

use*_*044 5 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
Run Code Online (Sandbox Code Playgroud)

输出:

[['Project1' 'CT' 800L]]
[]
Run Code Online (Sandbox Code Playgroud)

EdC*_*ica 5

您必须为此使用isnull

In [3]:

df[df['Project ID'].isnull()]
Out[3]:
  Project ID State  Cost
1       None     3  1000
Run Code Online (Sandbox Code Playgroud)

或使用apply

In [5]:

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