我有两个数据帧
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
谢谢您的帮助!
答案 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'])]