说我有一个映射:
mapping = {
'cat': 'purrfect',
'dog': 'too much work',
'fish': 'meh'
}
Run Code Online (Sandbox Code Playgroud)
和a dataframe
:
animal name description
0 cat sparkles NaN
1 dog rufus NaN
2 fish mr. blub NaN
Run Code Online (Sandbox Code Playgroud)
我想以编程方式description
使用animal
列和mapping
dict作为输入填写列:
def describe_pet(animal,mapping):
return mapping[animal]
Run Code Online (Sandbox Code Playgroud)
当我尝试使用pandas apply()
功能时:
df['description'].apply(describe_pet,args=(df['animal'],mapping))
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
TypeError: describe_pet() takes exactly 2 arguments (3 given)
Run Code Online (Sandbox Code Playgroud)
似乎使用apply()
是很简单的将一个参数传递给函数.我怎么能用两个参数做到这一点?
您可以使用该map
方法执行此操作,而无需编写函数或完全使用apply
:
df['description'] = df.animal.map(mapping)
Run Code Online (Sandbox Code Playgroud)