我有两个不相等的熊猫数据框 df 和 df1。 df 看起来像这样:
铬 | 开始 | 结束 | 频率 |
---|---|---|---|
chr1 | 1 | 1000 | 0.05 |
chr2 | 4500 | 5780 | 0.0099 |
chr2 | 5700 | 6540 | 1.3 |
df1 看起来像这样:
铬 | Start-500 | 开始+500 | End-500 | 结束+500 |
---|---|---|---|---|
chr1 | -499 | 501 | 500 | 1500 |
chr2 | 4000 | 5000 | 5280 | 5280 |
chr2 | 5200 | 6200 | 6040 | 7040 |
我想做的是如果:
-df['chr']==df1['chr']
和
-df['Start]
介于 df1['Start-500]
和 df1['Start+500']
和
之间
-df['End']
介于 df1['End-500']
和 df1["End+500']
然后将 Freq
添加到 df1
。
如果有人可以帮助我,那就太好了。谢谢
答案 0 :(得分:0)
由于您的“Start-500”、“Start+500”只是基于“Start”列(对于“End”也类似),您可以简单地使用 pandas.merge_asof
:
df1["Freq"] = pd.merge_asof(df1, df, left_on="Start+500", right_on="Start")["Freq"]
>>> df1
Chr Start-500 Start+500 End-500 End+500 Freq
0 chr1 -499 501 500 1500 0.0500
1 chr2 4000 5000 5280 5280 0.0099
2 chr2 5200 6200 6040 7040 1.3000