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

问题描述 投票:1回答:2

我有两个数据帧

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  

感谢您的任何帮助!

pandas
2个回答
1
投票

你可以试试这个:

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

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
© www.soinside.com 2019 - 2024. All rights reserved.