我有一个名为names
的Pandas Dataframe,如下所示:
name status
A X
B Y
C Z
D X
我想获取名称列(例如names['name']
),但只能使用不具有状态Y或Z的名称。
所以结果应该是:
name status
A X
D X
我该怎么做?
答案 0 :(得分:3)
使用isin
生成布尔值掩码并使用~
取消它:
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
答案 1 :(得分:2)
这也有效:
df.loc[(df['status']!='Y') & (df['status']!='Z')]
或者,如果您只想显示名称列中的数据:
df.loc[(df['status']!='Y') & (df['status']!='Z'), 'name']