将函数应用于带有两个参数的pandas数据框中的列

Rya*_*uck 4 python pandas

说我有一个映射:

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列和mappingdict作为输入填写列:

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()是很简单的将一个参数传递给函数.我怎么能用两个参数做到这一点?

Bre*_*arn 5

您可以使用该map方法执行此操作,而无需编写函数或完全使用apply:

df['description'] = df.animal.map(mapping)
Run Code Online (Sandbox Code Playgroud)