筛选Pandas DataFrame中列表中的元素

Mic*_*elA 4 python pandas

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

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

我试过了

result = df[df.id in ['foo', 'bar']]
Run Code Online (Sandbox Code Playgroud)

但是我只是得到一个ValueError:系列的真值是模棱两可的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。但是我无法使用any()函数给我结果...。

EdC*_*ica 5

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

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

Out[30]:
   value   id
0      1  foo
1      2  bar
Run Code Online (Sandbox Code Playgroud)

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

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

Out[31]:
0     True
1     True
2    False
Name: id, dtype: bool
Run Code Online (Sandbox Code Playgroud)