Pandas 如何选择属性列值等于列表中任意一个值的行

Pandas 如何选择属性列值等于列表中任意一个值的行,pandas,Pandas,如何筛选满足此条件的行: 如果行的属性列包含“attr1”或“attr3”中的任何值,请选择行 预期产出为: data = { "name": ["abc", "xyz", "pqr"], "attributes": [["attr2", "attr3"], ["attr2","attr4"], ["attr3", "attr1"] ] } df = pd.DataFrame.from_dict(data) 要获取布尔索引器 name attributes

如何筛选满足此条件的行: 如果行的属性列包含“attr1”或“attr3”中的任何值,请选择行

预期产出为:

data = {
    "name": ["abc", "xyz", "pqr"],
    "attributes": [["attr2", "attr3"], ["attr2","attr4"], ["attr3", "attr1"] ]
}

df = pd.DataFrame.from_dict(data)

要获取布尔索引器

    name      attributes
0  "abc"  ["attr2", "attr3"]
1  "pqr"  ["attr3", "attr1"]
然后

之后是否要重置索引取决于您。

使用

>>> df.loc[idx]
  name      attributes
0  abc  [attr2, attr3]
2  pqr  [attr3, attr1]
>>> df.loc[idx]
  name      attributes
0  abc  [attr2, attr3]
2  pqr  [attr3, attr1]
df[pd.DataFrame(df.attributes.tolist()).isin(['attr1','attr3']).any(1)]
Out[295]: 
       attributes name
0  [attr2, attr3]  abc
2  [attr3, attr1]  pqr