如何使用列表包含值来过滤列的数据帧

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用列表包含值来过滤列的数据帧相关的知识,希望对你有一定的参考价值。

我们在一列中包含带有列表的数据框。无法找到简单的方法来过滤数据帧,因为行包含列表中的值。

df = pd.DataFrame({'lists':[['a', 'c'], ['a', 'b', 'd'], ['c', 'd']]})

例如,我只需要在列表中包含'a'的行。我设法通过'申请'获得它。

df[df.lists.apply(lambda x: True if 'a' in x else False)]
>>>     lists
>>>0    [a, c]
>>>1    [a, b, d]

是否有像.isin()这样的东西,反之亦然?获得所需行的最佳方法是什么?谢谢。

答案

最简单的是使用qazxsw poi和qazxsw poi:

apply

但如果想检查in创建df1 = df[df.lists.apply(lambda x: 'a' in x)] ,但它有点复杂:

a

另一种解决方案是使用DataFramedf1 = df[pd.DataFrame(df.lists.values.tolist()).eq('a').any(axis=1)]

str.join

str.contains
另一答案

通过列表推导进行布尔索引是一种方式:

df1 = df[df.lists.str.join(',').str.contains('a')]

一些性能基准测试:

print (df1)
       lists
0     [a, c]
1  [a, b, d]

以上是关于如何使用列表包含值来过滤列的数据帧的主要内容,如果未能解决你的问题,请参考以下文章

在具有包含数据帧的列表列的小标题中,如何使用自定义函数包装 mutate(foo = map2(...))?

如何过滤具有列表的列的数据框包含值[重复]

如何过滤数据帧中的数据并使用循环基于它更改列的单元格值?

如果包含字符串列表,则过滤 pyspark 数据帧

需要使用迭代多个列的过滤器值过滤 Spark 数据帧

如何使用 SQL 中的“in”和“not in”过滤 Pandas 数据帧