Python if else函数导致ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()

Python if else函数导致ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all(),python,if-statement,valueerror,ambiguous,Python,If Statement,Valueerror,Ambiguous,我在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')

我在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问题似乎表明问题的原因不止一个,但我只使用了一个条件

数据如下所示:


那么您看到的是一个包含一列或一系列数据的数据帧? 在这种情况下,请尝试使用
.values
,如下所示:

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

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

请提供重新创建此错误所需的其他信息。欢迎使用堆栈溢出。什么是
数据
?您是否使用非标准库,如
numpy
pandas
?请阅读。请提供您正在使用的数据的示例。根据您的描述,不清楚数据是什么样子的。