过滤列表中元素的 Pandas DataFrame [重复]

Posted

技术标签:

【中文标题】过滤列表中元素的 Pandas DataFrame [重复]【英文标题】:Filter Pandas DataFrame for elements in list [duplicate] 【发布时间】:2015-12-13 15:25:49 【问题描述】:

我有一个包含值和附加信息的 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:一个系列的真值是模棱两可的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。但是我无法使用 any()-Function 来给我结果...... .

【问题讨论】:

是的,它是重复的。搜索的时候没找到上面那个。。。。 【参考方案1】:

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

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

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

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

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

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

【讨论】:

以上是关于过滤列表中元素的 Pandas DataFrame [重复]的主要内容,如果未能解决你的问题,请参考以下文章

按列表中的值过滤pandas DataFrame [重复]

如何根据 Pandas 中的列表过滤 DataFrame 中的项目?

通过字典列表过滤 pandas DataFrame

如何使用 python 或 pandas 根据包含字典列表的列过滤 DataFrame?

访问 Pandas DataFrame 元素中的列表

Pandas - 过滤和正则表达式搜索 DataFrame 的索引