【发布时间】:2020-10-20 15:43:56
【问题描述】:
我需要在两个数据帧之间合并,但基于一个条件,因此当我尝试使用这样的 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().
【问题讨论】:
-
您正在尝试将整个系列(新列中的所有“单元格”)与单个值进行比较,这就是错误的原因。如果您的条件表明 Series 中的 any 或 all 值必须介于 -90 和 90 之间才能将 Dataframes 与 int_theta 和 mapped_neg_tilt_angle ID 合并,然后使用 RSRP_cal['new '].any() > 90 或 RSRP_cal['new'].any() (如果每个值都必须在限制范围内,则为 all)。如果您只想合并满足条件的行,请改用掩码(就像在 Grzegorz 的分析器中一样)