我有一个名为 names
的 Pandas Dataframe,如下所示:
name status
A X
B Y
C Z
D X
我想要获取名称列(例如 names['name']
),但仅限于不具有状态 Y 或 Z 的名称。
所以结果应该是:
name status
A X
D X
我该怎么做?
最佳答案
使用isin
生成 bool 掩码并使用 ~
对其取反:
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
关于基于第二列的 Pandas DataFrame 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31317375/