首页 > 解决方案 > 检查一个数据框中一列中的值是否在另一个数据框中两列中的值之间的范围内

问题描述

我有两个数据框

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  

感谢您的任何帮助!

标签: pandas

解决方案


您可以使用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

推荐阅读