我有以下代码。
import pandas as pd
data = {'income_bracket':['<=50k', '<=75k', '<=125k', '>1(25k']}
df = pd.DataFrame(data)
def label_fix(label):
if df['income_bracket']== '<=50K':
return 0
else:
return 1
df['income_bracket']=df['income_bracket'].apply(label_fix)
运行代码时,出现以下错误。
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我非常感谢您的帮助。 谢谢
答案 0 :(得分:0)
您的错误是您不使用传递给label_fix
的参数,但实际上您不应该在Pandas中使用apply
,这实在太慢了。
相反,以矢量形式进行操作:
df['income_bracket'] = np.where(df['income_bracket'] == '<=50K', 0, 1)
如果您有两种以上的情况,可以使用np.select()
代替np.where()
。
答案 1 :(得分:0)
import pandas as pd
data = {'income_bracket':['<=50k', '<=75k', '<=125k', '>1(25k']}
df = pd.DataFrame(data)
def label_fix(label):
if label== '<=50K':
return 0
else:
return 1
df['income_bracket']=df['income_bracket'].apply(label_fix)
这是您的代码段的更正版本。您正在做的是调用df ['income_bracket']这是一个系列。相反,您应该在apply()中使用作为参数传递给label_fix()的'label'。要将'<= 50K'更改为'<= 50k',否则所有值均为1