我想创建一个新列,对另一列的值进行分类,但在应用 lambda 后出现 ValueError
I want to create a new column which categorizes values from another column but i get a ValueError after applying lambda
我想创建一个新列,将制造商列中的值分类到它们的来源内容,例如大众汽车的欧洲。制造商列中的值是对象。
我正在尝试使用以下功能:
def func(region):
if auto2['manufacturer'] == 'Audi':
return 'Europa'
elif auto2['manufacturer'] == 'Land Rover':
return 'Europa'
elif auto2['manufacturer'] == 'Volkswagen':
return 'Europa'
elif auto2['manufacturer'] == 'Chevrolet':
return 'Verenigde Staten'
elif auto2['manufacturer'] == 'Jeep':
return 'Verenigde Staten'
elif auto2['manufacturer'] == 'Dodge':
return 'Verenigde Staten'
elif auto2['manufacturer'] == 'Ford':
return 'Verenigde Staten'
elif auto2['manufacturer'] == 'Lincoln':
return 'Verenigde Staten'
elif auto2['manufacturer'] == 'Mercury':
return 'Verenigde Staten'
elif auto2['manufacturer'] == 'Pontiac':
return 'Verenigde Staten'
else:
return 'Asia'
auto2['Region'] = auto2['manufacturer'].apply(lambda x: region)
定义函数工作正常,但是当我执行应用函数时出现以下错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty,
a.bool(), a.item(), a.any() or a.all().
有什么方法可以修复我的代码,或者有没有更好的方法来创建一个新列来对另一列的值进行分类?
有一种更简单的方法可以做到这一点。首先,定义一个字典(但包含所有值而不仅仅是这四个):
manufacturer_regions = {
'Audi': 'Europa',
'Land Rover': 'Europa',
'Jeep': 'Verenigde Staten',
'Dodge': 'Verenigde Staten'
}
然后将它应用到 manufacturer
列:
auto2['region'] = auto2.manufacturer.apply(lambda x: manufacturer_regions[x])
我想创建一个新列,将制造商列中的值分类到它们的来源内容,例如大众汽车的欧洲。制造商列中的值是对象。
我正在尝试使用以下功能:
def func(region):
if auto2['manufacturer'] == 'Audi':
return 'Europa'
elif auto2['manufacturer'] == 'Land Rover':
return 'Europa'
elif auto2['manufacturer'] == 'Volkswagen':
return 'Europa'
elif auto2['manufacturer'] == 'Chevrolet':
return 'Verenigde Staten'
elif auto2['manufacturer'] == 'Jeep':
return 'Verenigde Staten'
elif auto2['manufacturer'] == 'Dodge':
return 'Verenigde Staten'
elif auto2['manufacturer'] == 'Ford':
return 'Verenigde Staten'
elif auto2['manufacturer'] == 'Lincoln':
return 'Verenigde Staten'
elif auto2['manufacturer'] == 'Mercury':
return 'Verenigde Staten'
elif auto2['manufacturer'] == 'Pontiac':
return 'Verenigde Staten'
else:
return 'Asia'
auto2['Region'] = auto2['manufacturer'].apply(lambda x: region)
定义函数工作正常,但是当我执行应用函数时出现以下错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
有什么方法可以修复我的代码,或者有没有更好的方法来创建一个新列来对另一列的值进行分类?
有一种更简单的方法可以做到这一点。首先,定义一个字典(但包含所有值而不仅仅是这四个):
manufacturer_regions = {
'Audi': 'Europa',
'Land Rover': 'Europa',
'Jeep': 'Verenigde Staten',
'Dodge': 'Verenigde Staten'
}
然后将它应用到 manufacturer
列:
auto2['region'] = auto2.manufacturer.apply(lambda x: manufacturer_regions[x])