根据条件合并两个不同列上的两个数据帧

时间:2020-06-30 10:48:45

标签: python pandas

我需要在两个数据框之间进行合并,但要基于条件,因此当我尝试使用if条件时,输出将基于该条件在2个不同的列上合并数据框

if RSRP_cal['new'] > 90 or RSRP_cal['new'] < -90 :
    RSRP_new = pd.merge(RSRP_cal , tilt ,left_on = 'int_theta',  right_on='mapped_neg_tilt_angle' ,how = 'left')
else:
    RSRP_new = pd.merge(RSRP_cal , tilt ,left_on = 'int_theta',  right_on='mapped_tilt_angle' ,how = 'left')

发生此错误:

The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

3 个答案:

答案 0 :(得分:0)

这个问题似乎还不清楚。添加更多详细信息肯定会有所帮助。但是现在,使用您提到的详细信息,您正在尝试将RSRP_cal与倾斜合并。 根据您的使用情况,功能merge的使用pd.merge是正确的格式,

temp = RSRP_cal.merge(tilt ,left_on = 'int_theta', right_on='mapped_neg_tilt_angle' ,how = 'left'))

让我知道它是否有效。

答案 1 :(得分:0)

我不确定,但是如果合并参数正确,并且在每种情况下都存在真值(> 90或<-90),则可能应该更改第二个“ RSRP_new”变量的名称,因为会模棱两可。如果这不起作用,则应考虑“ for”循环,该循环将对数据帧的每一行进行迭代。 RSRP_cal的形状是什么?

答案 2 :(得分:0)

怎么样:

mask = RSRP_cal['new'].abs().gt(90)

RSRP_new = pd.merge(RSRP_cal.loc[mask] , tilt , /
    left_on = 'int_theta',  right_on='mapped_neg_tilt_angle' , /
    how = 'left')

RSRP_new = pd.concat([RSRP_new, /
    pd.merge(RSRP_cal.loc[~mask], tilt, /
    left_on = 'int_theta',  right_on='mapped_tilt_angle', /
    how = 'left')])