【问题标题】:Apply if statement groupby pandas dataframe. The truth value of a Series is ambiguous error应用 if 语句 groupby 熊猫数据框。 Series 的真值是模棱两可的错误
【发布时间】:2018-12-28 12:25:18
【问题描述】:

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

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

弹出以下警告。

Series 的真值是模棱两可的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

提前致谢

【问题讨论】:

  • GroupBy 不是必需的:df['result'] = np.where(df['difference_bearing'] > 20, -1, 0)
  • 在这种情况下是必需的,有不同的组(tripIDs)。我对组内而不是组之间的差异轴承感兴趣。
  • 我不明白。也许向minimal reproducible example 提供样本数据和输出会有所帮助。在使这个问题可以回答方面真的有很长的路要走。

标签: python pandas


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    以下是克服错误的方法:

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

    【讨论】:

    • 我仍然不明白问题(或答案)试图达到什么目的。并且建议将嵌套应用程序作为任何解决方案都是该死的罪过:-(
    • 是的,你是对的。但我现在想通了。感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 2022-09-28
    • 2019-05-04
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 2020-03-31
    相关资源
    最近更新 更多