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

时间:2015-06-13 19:12:09

标签: python pandas

说我有一个映射:

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

dataframe

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

我想使用description列和animal dict以编程方式填写mapping列作为输入:

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

当我尝试使用pandas apply()函数时:

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

我收到以下错误:

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

似乎使用apply()将一个参数传递给函数是微不足道的。我怎么能用两个参数来做呢?

2 个答案:

答案 0 :(得分:5)

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

df['description'] = df.animal.map(mapping)

答案 1 :(得分:2)

建议的答案可以解决您的具体问题,但对于更通用的案例:

args参数用于除列之外的参数:

  

args:tuple除了传递给函数的位置参数   数组/系列

pandas.DataFrame.apply