我需要在两个数据框之间进行合并,但要基于条件,因此当我尝试使用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().
答案 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')])