python - 根据其他列中是否存在值查询列
问题描述
我想找到数据框中的所有行,其中一列中的文本可以在第二列中找到。例如:
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
有谁知道查询数据框以查找一列中的文本包含第二列中的文本的所有行的最有效方法?
解决方案
那应该做的工作
>>> df[df.apply(lambda x: x['b'] in x['a'], axis=1)]
a b
0 THE BIG DANCE BIG
2 TEST TEST
推荐阅读
- tcp - F-stack Client 未连接到 F-stack Server
- pandas - 通过 List 列中的常见字符串元素映射两个数据框
- web-applications - 使用 Angular6 应用程序连接设备
- reactjs - 复制反应状态是正确的设计方法吗?
- hive - 蜂巢。是否 ALTER TABLE 表名 CHANGE name1 name2 newdatatype; 删除 name1 的下划线数据?
- ios - 如何在 Ios 中解析 Web 服务的响应?
- php - 从 HTML 表单获取值时未定义的索引
- xml - 如何使用 xquery 从输入 xml 中删除重复节点
- rest - 如何使用 Airflow DAG 调用 REST 端点
- cassandra - Logstash JDBC 输入插件 Cassandra,Maria 驱动程序不工作