pandas - 检查一个数据框中一列中的值是否在另一个数据框中两列中的值之间的范围内
问题描述
我有两个数据框
df1 = pd.DataFrame({'chr':[1,1],'pos':[100, 200]})
df2 = pd.DataFrame({'chr':[1,1,2],'start':[90,110,90],'stop':[110,120,110]})
我想用两个数据帧的信息制作一个新的数据帧,如果:
df1['chr'] 中的值与 df2['chr'] 相同,并且
值 df['pos'] 介于 df2['开始'] 和 df['停止']
从上面的数据框中,结果应该是:
chr pos start stop
1 100 90 110
感谢您的任何帮助!
解决方案
您可以使用df.merge()
后跟series.between()
:
m=df1.merge(df2,on='chr',how='left')
m.loc[m.pos.between(m.start,m.stop)]
chr pos start stop
0 1 100 90 110
推荐阅读
- python - 如何使用 matplotlib 在图像上绘制坐标数组?
- java - 如何创建获取两个参数的方法 - 流和整数
- php - 如果有人选择了特定的模板 ID,想要创建一个条件语句.....不回显 html 代码
- groovy - JMeter 的世界中的道具是什么类型的?
- r - 如何在 R 图中使用乳胶文本更改字体?
- python - 通过 URL 循环为 pandas 创建 csv 和数据框
- html - 如何在 SwiftUI 文本中显示 HTML 或 Markdown?
- excel - 使用正确的参数运行子程序时出现“参数不是可选错误”
- flutter - 颤振/飞镖上的列错误所需的参数
- python - AttributeError:模块're'没有属性'IGNORECASE' ...仅在pyenv构建中