将函数应用于pandas中的不同列

时间:2017-04-20 02:37:52

标签: python pandas apply

我有一个令人费解的案例,我的数据框看起来像这样

  id    high low medium count
0  0     0    4    8     12
1  1     5    2    1      8

我想为每个级别生成3个额外的列:高,低中。

我定义了一个函数

def foo(row['high']):
    return  (1/3+row['high']/(1+row['count']))

我想我需要应用此功能3次,然后更改行[' high'],行[' low']和row [' medium' ]。

我使用了类似

的内容
df = df.apply(foo,axis=1)

但是,它不起作用。我想知道是否有一个好方法(也许我可以只应用这个函数一次?)来做这个....

1 个答案:

答案 0 :(得分:0)

您无法定义具有索引变量作为参数名称的函数。改变这个:

def foo(row['high']):

到此:

def foo(row):

但是,对于您正在做的事情,您不需要应用函数。它可以通过列上的操作来完成。

(1/3)+df['high']/(1+df['count'])

# returns:
0    0.333333
1    0.888889
dtype: float64