我有一个令人费解的案例,我的数据框看起来像这样
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)
但是,它不起作用。我想知道是否有一个好方法(也许我可以只应用这个函数一次?)来做这个....
答案 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