python - 根据两列的组合过滤 Pandas 数据框
问题描述
假设我有一个数据框,
a b
0 1 2
1 2 3
2 4 2
3 4 3
我想过滤数据框,以便得到结果,
a b
0 1 2
3 4 3
即,我想要组合(1,2)
并(4,3)
通过将两列过滤在一起。
如果我试试这个,
df1 = df[df['a'].isin([1,4]) & df['b'].isin([2,3])]
我得到了整个数据框,因为 和 的组合(1,3)
也(4,2)
包含在上述方法中。但我只需要给定的组合。我有一个巨大的两列元组列表,我想根据相应的元组组合过滤数据框。
另外,我不想将两列合并为一个字符串然后过滤。
解决方案
利用 -
df[df[['a', 'b']].apply(tuple, axis=1).isin([(1,2), (4,3)])]
输出
a b
0 1 2
3 4 3
解释
df[['a', 'b']].apply(tuple, axis=1)
给出一系列元组 -
0 (1, 2)
1 (2, 3)
2 (4, 2)
3 (4, 3)
.isin([(1,2), (4,3)])
搜索所需的元组并给出一个布尔系列
推荐阅读
- php - Enfold 4.7.6 Wordpress 主题 - 幻灯片放映(全角)包含分号“
- c# - 如何按属性对一组属性进行分组?
- python-3.x - 用部分字典替换数据框行
- html - 样式标签的样式是否正确?
- docker - 分发失败,failed_to_start_child。RabbitMQ + docker-compose 问题
- sql - 获取特定字符之前的字符串
- virtual-machine - vboxmanage guestcontrol 修改密码
- javascript - 如何在我现有的 nodejs 服务器上使用 sqs 消息
- php - VPS 重启后 OpenLiteSpeed CyberPanel 上的 Wordpress 出现 404 错误
- python - 即使使用较旧的 spark 版本,也没有名为“pyspark.streaming.kafka”的模块