基于第二列的 Pandas DataFrame 过滤

标签 pandas filter dataframe

我有一个名为 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/

相关文章:

python - 当根据其他列更改值时,Pandas NaN 值会导致麻烦

python - pandas 获取前一个日期的索引

python - 模型的特征数量必须与输入匹配?

java - Spark重新分区和spark.sql.shuffle.partition的区别

python-2.7 - 如何根据 Pandas 中两列的时间差创建新列?

python - 用列表列表屏蔽两列(Pandas df)

javascript - Angular2 .filter 对象数组

sorting - 同位素过滤器、排序、搜索和 Url 哈希

json - jq - 嵌套字典解析器和提取键

python-3.x - 如何获取用户输入并将其传递给预测模型