Python 将函数应用于表中的不同列

Python 将函数应用于表中的不同列,python,pandas,apply,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']和行['me

我有一个令人费解的例子,我的数据框是这样的

  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']和行['medium']

我用过类似的东西

df = df.apply(foo,axis=1)

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

您不能定义一个将索引变量作为参数名的函数。更改此项:

def foo(row['high']):
为此:

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

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

# returns:
0    0.333333
1    0.888889
dtype: float64