python - 如何过滤具有列表的列的数据框包含值

标签 python list pandas filter

<分区>

我们的数据框在一列中包含列表。找不到简单的方法来过滤列表中包含值的行的数据框。

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() 的东西,反之亦然? 获取所需行的最佳方法是什么? 谢谢。

最佳答案

最简单的是使用 applyin:

df1 = df[df.lists.apply(lambda x: 'a' in x)]

但是如果要检查a创建DataFrame,但是有点复杂:

df1 = df[pd.DataFrame(df.lists.values.tolist()).eq('a').any(axis=1)]

另一个解决方案是使用 str.joinstr.contains :

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

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

关于python - 如何过滤具有列表的列的数据框包含值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49008508/

相关文章:

python - Python 中的 Tkinter - 它应该很慢还是程序中其他地方的瓶颈?

javascript - Flask 服务器发送事件套接字异常

Python Selenium 在 iframe 中切换到 iframe

list - 将列表附加到 Haskell 中的列表列表中?

python - 错误 : IndexError: string index out of range. 试图颠倒列表的顺序

python - 如何比较 Pandas 中的列并使用是或否创建新列

python - 具有多个返回值的模拟 python 函数

c++ - C++-std::list.erase()不删除元素

python - 删除不符合要求的列值

pandas - 从 pandas.cut 自定义间隔索引中隐藏标签