Pandas 基于第二列的数据帧过滤

Pandas 基于第二列的数据帧过滤,pandas,filter,dataframe,Pandas,Filter,Dataframe,我有一个名为names的数据框架,如下所示: name status A X B Y C Z D X 我想获取名称列(例如,names['name']),但只获取状态为Y或Z的名称 因此,结果应该是: name status A X D X 如何执行此操作?用于生成布尔掩码,并使用~对其求反: In [230]: df[~df['status']

我有一个名为
names
的数据框架,如下所示:

name        status
A           X
B           Y
C           Z
D           X
我想获取名称列(例如,
names['name']
),但只获取状态为Y或Z的名称

因此,结果应该是:

name        status
A           X
D           X
如何执行此操作?

用于生成布尔掩码,并使用
~
对其求反:

In [230]:
df[~df['status'].isin(['Y','Z'])]

Out[230]:
  name status
0    A      X
3    D      X
isin的结果

In [231]:
df['status'].isin(['Y','Z'])

Out[231]:
0    False
1     True
2     True
3    False
Name: status, dtype: bool
然后,您可以访问“名称”列,如下所示:

In [232]:
df.loc[~df['status'].isin(['Y','Z']),'name']

Out[232]:
0    A
3    D
Name: name, dtype: object
这也将有助于:

df.loc[(df['status']!='Y') & (df['status']!='Z')]
或者,如果您只想显示“名称”列中的数据:

df.loc[(df['status']!='Y') & (df['status']!='Z'), 'name']