【问题标题】:if else function causes ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()if else 函数导致 ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
【发布时间】:2020-03-25 06:41:17
【问题描述】:

我在 pandas 数据框中有一列数据,其中包含百分比,例如 5.76%、4.2% 或 2.34%,以及单词 Free。我想为每个具有 0 免费的列创建另一列,并将百分比转换为整数/分数,例如 0.0576、0.042 和 0.0234。

我创建了以下函数:

def ad_val_rate(data):
if data['2021'] == 'Free':
    return 0
else:
    return data['2021'].str.rstrip('%').astype('float') / 100.0

当我使用这个函数时,我得到以下错误:ValueError:一个系列的真值是不明确的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。其他类似的 stackoverflow 问题似乎表明问题是由多个条件引起的,但我只使用一种条件。

数据如下所示:

Excel image

【问题讨论】:

  • 请提供重新创建此错误所需的其他信息。
  • 欢迎来到 Stack Overflow。 data 是什么?你在使用像numpypandas 这样的非标准库吗?请阅读How to Ask
  • 请提供您正在使用的数据的示例。根据您的描述,不清楚数据是什么样的。

标签: python if-statement valueerror ambiguous


【解决方案1】:

所以您正在查看具有一列或系列的 DataFrame? 在这种情况下,请尝试使用.values,如下所示:

def ad_val_rate(data):
    if data['2021'].values == 'Free':
        […]

如果您的数据框中有多个列,则需要迭代。

【讨论】:

    猜你喜欢
    • 2016-12-01
    • 2020-02-12
    • 2019-01-24
    • 2020-05-27
    • 1970-01-01
    • 2018-11-22
    • 2021-03-21
    • 2021-05-27
    • 2021-04-07
    相关资源
    最近更新 更多