2017-04-20 28 views
0

我有一個令人費解的情況下,我的數據幀像這樣應用功能,以不同的列在熊貓

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倍,和改變行[「高」],行[「低」]和行[「媒介」。

我用類似

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

但是,這是行不通的。我想知道是否有一種好的方法(也許我可以只應用一次這個功能?)來做到這一點....

回答

0

你不能定義一個函數,它有一個索引變量作爲參數名。更改此:

def foo(row['high']): 

這樣:

def foo(row): 

但是,對於你在做什麼,你並不需要應用的功能。它可以通過對列進行操作來完成。

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

# returns: 
0 0.333333 
1 0.888889 
dtype: float64