我有两个数据帧
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
感谢您的任何帮助!
你可以试试这个:
df = df1.merge(df2,on='chr',how='left')
df.loc[(df['pos'] >= df['start']) & (df['pos'] <= df['stop'])]
您可以使用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