python - 为列表中的元素过滤 Pandas DataFrame

标签 python pandas

<分区>

我有一个包含值和附加信息的 pandas DataFrame。我希望能够提取仅属于一种信息的值。我事先不知道将查询哪些值和多少值。因此,有可能只调用一次带有附加信息“foo”的值,有时带有附加信息“bar”和“baz”,因此使用简化的 DataFrame

import pandas as pd
df = pd.DataFrame(
    [[1, 'foo'], [2, 'bar'], [3, 'baz']], columns=['value', 'id'])

我试过了

result = df[df.id in ['foo', 'bar']]

但我只是得到一个 ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。但是我无法获取 any()-Function 来给我结果...。

最佳答案

使用isin根据传入的列表测试列的成员资格:

In [30]:
df[df['id'].isin(['foo','bar'])]

Out[30]:
   value   id
0      1  foo
1      2  bar

这里 isin 生成一个 bool 掩码,我们用它来过滤 df:

In [31]:    
df['id'].isin(['foo','bar'])

Out[31]:
0     True
1     True
2    False
Name: id, dtype: bool

关于python - 为列表中的元素过滤 Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32618812/

相关文章:

python - Pandas Dataframe 将行绘制为 x 值,将列标题绘制为 y 值

python - PyArrow:使用嵌套类型在 Parquet 中存储字典列表

python - 如何获得船上创建的矩形的周长

python - 在 Pandas 中签名时间增量到签名秒数

python - 如何使用条件从现有列在数据框中创建新列?

Python/Pandas 运行总计

python - 如何在获得中间结果的同时在 sqlalchemy 的大表上应用 LIMIT/OFFSET [请阅读下面的详细信息]?

python - Flask-Mail 和 Redis 队列库集成给出错误

python - 相关字段的查询无效: blog_posts_name

python - 绘制饼图时出现问题