首页 > 解决方案 > 根据其他列中是否存在值查询列

问题描述

我想找到数据框中的所有行,其中一列中的文本可以在第二列中找到。例如:

import numpy as np
import pandas as pd
df = pd.DataFrame([['THE BIG DANCE', 'BIG'], ['SUPER FUN TIME', 'JUNK'], ['TEST', 'TEST']], columns=list('ab'), dtype="string")
df

这会产生一个如下所示的数据框:

一个 b
0 大舞会 大的
1 超级有趣的时间 垃圾
2 测试 测试

我想创建一个包含第 0 行和第 2 行的新数据框,因为这些行中的 a 列包含 b 列中的文本。我尝试使用查询函数,但它只返回第 2 行。

df.query('b in a')

回报:

一个 b
2 测试 测试

运算符中的 python 可以正常使用此文本,但熊猫数据框似乎并不认可它。

'BIG' in 'THE BIG DANCE'
Returns: True

有谁知道查询数据框以查找一列中的文本包含第二列中的文本的所有行的最有效方法?

标签: pythonpandasdataframe

解决方案


那应该做的工作

>>> df[df.apply(lambda x: x['b'] in x['a'], axis=1)]
               a     b
0  THE BIG DANCE   BIG
2           TEST  TEST

推荐阅读