检查一个数据框中的一列中的值是否在另一数据框中的两列中的值之间的范围内

时间:2019-02-12 15:03:59

标签: 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 ['start']和df ['stop']中的值之间

从上面的数据框中可以看到:

chr  pos    start    stop  
1    100    90    110  

谢谢您的帮助!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您可以尝试以下方法:

df = df1.merge(df2,on='chr',how='left')
df.loc[(df['pos'] >= df['start']) & (df['pos'] <= df['stop'])]