在 python 中获取错误作为"**The truth value of a Series is ambiguous"



当我尝试执行 if 语句并将其分配回数据帧列时,我收到以下错误

序列的真值是不明确的。使用 a.empty、a.bool((、a.item((、a.any(( 或 a.all((。

def cal_test():
if IP['Type'] == 'ABC':
(IP['tt'] + ' ' + IP[abc])
else:
IP[tt]
IP['column_name']  =   cal_test()
IP['column_name'] = IP['tt']
IP.loc[IP['Type'] == 'ABC', 'column_name'] = IP['tt'] + ' ' + IP['abc']

表达式:

IP['Type'] == 'ABC'

表示将数据帧IP的列"类型"与字符串"ABC"进行比较,这当然是模棱两可的 - 您是否希望它失败,因为您将Apple与橙色进行比较,或者您的意思是列中的任何项目是否与字符串匹配?

比较逐项的正确方法是IP['Type'].eq('ABC')它返回布尔值的列(即系列(,或者您可以使用anyall来表示列中的任何值或列中的所有值进行匹配。

而且,您的函数不返回任何内容。因此,您不可能将任何内容"放回"数据帧。请尝试改为执行以下操作:

IP['column_name'] = IP.apply(
lambda row: (row['tt']+' '+row['abc']) if row['Type'] == 'ABC' else
row['tt'],
axis=1
)

相关内容

最新更新