从熊猫数据框中选择符合条件的行

时间:2021-07-27 21:01:07

标签: python pandas dataframe

我有两个不相等的熊猫数据框 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

如果有人可以帮助我,那就太好了。谢谢

1 个答案:

答案 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