pandas - 选择可以在列表中找到数字的行
问题描述
鉴于以下数据
我希望选择num
出现在list
. 在这种情况下,它将选择第 1 行和第 2 行,第 3 行没有被选择,因为3
在[4,5]
.
以下是数据框,我们应该如何编写过滤器查询?
cat1=pd.DataFrame({"num":[1,2,3],
"list":[[1,2,3],[3,2],[4,5]]})
解决方案
一种可能的列表理解解决方案,zip
并in
传递给boolean indexing
:
df = cat1[[a in b for a, b in zip(cat1.num, cat1.list)]]
或使用DataFrame.apply
withaxis=1
处理每行的解决方案:
df = cat1[cat1.apply(lambda x: x.num in x.list, axis=1)]
或创建DataFrame
和测试成员资格:
df = cat1[pd.DataFrame(cat1.list.tolist()).isin(cat1.num).any(axis=1)]
print (df)
num list
0 1 [1, 2, 3]
1 2 [3, 2]
推荐阅读
- c# - 在 LINQ 中解构包含 ValueTuple 的容器
- function - Flutter Listview Builder 在单击图标上添加和删除更新数量文本字段
- javascript - webRTC:如何从被叫端更新视频流
- php - 用mysql分两行获取记录
- php - PHP - ZipArchive() 清理权限问题
- c# - 未在视图上显示的特定字段的模型状态错误验证
- php - Twig 如何检查正在渲染的模板
- python - 何时使用 trunc() 而不是 int() 将浮点类型数转换为整数更好?
- sql-server - 如何自动化 SQL Server 查询并将结果自动放入 Excel 文件
- jekyll - 发布时如何让 Jekyll 将网站图标从子目录复制到根目录?