如果列是列表,是否可以过滤 Pandas DataFrame 列?

Is it possible to filter Pandas DataFrame column if column is a list?

import pandas as pd

dafr = pd.DataFrame({'a': [1,2,3], 'b': [[1,2,3],[2,3,4],[3,4,5]]})

我尝试做类似的事情:

dafr[dafr['b'].isin(2)]

哪些应该 return 具有列表的行:[1,2,3] & [2,3,4]。

不知这是否可行?

isin returns 列值是否在您传递的内容中。您想检查您传递的内容是否在列值中。

据我所知,没有直接的快捷方式,但您可以使用 map:

>>> dafr[dafr.b.map(lambda x: 2 in x)]
    a          b
0  1  [1, 2, 3]
1  2  [2, 3, 4]
dafr[dafr['b'].apply(lambda x: 2 in x)]

如果您将 b 存储为元组列而不是列表列,afr[dafr['b'].apply(lambda x: 2 in x)] 将执行得相当快。