如果if语句groupby pandas数据框,则应用。系列的真值是模棱两可的错误

时间:2018-12-28 12:25:18

标签: python pandas

我无法对difference_bearing列应用if语句。 如果column_bearing(float)列的值> 20,则预期结果将为-1。在所有其他情况下,预期结果将为0。

df_FCD_big.groupby(['tripID'])['difference_bearing'].apply(lambda x: -1 if x >20 else 0)

以下警告弹出。

系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。

预先感谢

2 个答案:

答案 0 :(得分:0)

如@coldspeed所述。
如果您需要了解组内的指标,则可以在此之后应用groupby来做到这一点,这样会更有效率。

df['result'] = np.where(df['difference_bearing'] > 20, -1, 0)
df_FCD_big.groupby(['tripID'])['result'].apply(sum)

答案 1 :(得分:-1)

这是克服错误的方法:

df_FCD_big.groupby(['tripID'])['difference_bearing'].apply(lambda x: x.apply(lambda y: -1 if y > 20 else 0))