python - 熊猫在范围内提取行
问题描述
我有两个熊猫表:
Table1
PosA PosB PosC
1 100 110
1 300 350
4 100 120
Table2
PosA PosD
1 105
2 305
4 115
5 308
我想从中提取所有信息Table1
,如果PosD
Table2 在范围内并且PosB
ANDPosC
并且完全匹配。PosA
Table1
Table2
所以正确的输出是:
PosA PosB PosC PosD
1 100 110 105
4 100 120 115
如何根据这个规则合并这两个表?
解决方案
这里 df1 是你的 Table1 和 df2 是你的表 2
import pandas as pd
首先利用reindex()
'df1'中的方法使其长度等于'df2':-
df1=df1.reindex(df2.index)
然后检查您的状况:-
mask=(df2['PosD'].between(df1['PosB'],df1['PosC'])) & (df2['PosA']==df1['PosA'])
merge()
现在通过使用方法 in合并它们pandas
并传递mask
indf1
内部merge()
方法:-
result=pd.merge(df1[mask],df2,on='PosA').astype(int)
现在,如果您打印**result**
,那么您将获得预期的输出:-
PosA PosB PosC PosD
0 1 100 110 105
1 4 100 120 115
推荐阅读
- node.js - GCP PubSub - 使用 orderingKey (Nodejs) 进行批处理
- airflow - 初始运行期间 DAG 失败
- javascript - 如何在对象数组中找到匹配的颜色?
- r - 将字符串添加到以数字 R 结尾的列名
- django - Django Authentication 将 API 链接到应用程序并集成社交身份验证
- azure - 无法通过 Curity 访问 Azure 服务
- react-native - Expo SQLite:没有这样的表(在代码中创建的数据库))
- html - 菜单没有出现在标题区域 html/css 中?
- mysql - InnoDB 表上的 MySQL 全文搜索索引和缺失结果
- html - 如何将相邻选择器与 :before 一起使用?