Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Apply function to column in pandas dataframe that takes two arguments

Tags:

python

pandas

Say I have a certain mapping:

mapping = {
    'cat': 'purrfect',
    'dog': 'too much work',
    'fish': 'meh'
    }

and a dataframe:

    animal  name       description
0   cat     sparkles   NaN
1   dog     rufus      NaN
2   fish    mr. blub   NaN

I would like to programmatically fill in the description column using the animal column and mapping dict as inputs:

def describe_pet(animal,mapping):
    return mapping[animal]

When I try to use pandas apply() function:

df['description'].apply(describe_pet,args=(df['animal'],mapping))

I get the following error:

TypeError: describe_pet() takes exactly 2 arguments (3 given)

It seems like using apply() is trivial passing one argument to the function. How can I do it with two arguments?

like image 730
ryantuck Avatar asked Feb 10 '23 20:02

ryantuck


1 Answers

You can do this with the map method without writing a function or using apply at all:

df['description'] = df.animal.map(mapping)
like image 140
BrenBarn Avatar answered May 19 '23 01:05

BrenBarn