2017-02-16 98 views
1

發展因子從時刻到時間噸+ 1是A噸+ 1/A。我想這種計算應用到數據幀熊貓看起來像下面:計算髮育因子使用大熊貓數據幀

 
    T0 T1 T2 
0 100 200 250 
1 80 120 150 

another post開始,我嘗試以下

f = lambda x: np.divide(x[1], x[0]) 
df.applymap(f, axis=1) 

但我得到一個錯誤的索引錯誤。我想輸出是

 
    T0_T1 T1_T2 
0 2.0 1.25 
1 1.5 1.25 
+0

有什麼錯誤?你也應該發佈錯誤消息。 –

回答

1

IIUC您需要更改applymapapply

f = lambda x: np.divide(x[1], x[0]) 
df1 = df.apply(f, axis=1) 
print (df1) 
0 2.0 
1 1.5 
dtype: float64 

如果功能比較複雜:

def f(x): 
    print (x) 
    #add code 
    return x.T1/x.T0 

df1 = df.apply(f, axis=1) 
print (df1) 
0 2.0 
1 1.5 
dtype: float64 

但更好的是使用矢量更快的解決方案與div

print (df.T1.div(df.T0)) 
0 2.0 
1 1.5 
dtype: float64 

print (df.T1/df.T0) 
0 2.0 
1 1.5 
dtype: float64 

的CommNet通過編輯:

除以shift版DF,最後由iloc除去第一列:

df1 = df.div(df.shift(axis=1)) 
print (df1) 
    T0 T1 T2 
0 NaN 2.0 1.25 
1 NaN 1.5 1.25 

df1 = df1.iloc[:,1:] 
print(df1) 
    T1 T2 
0 2.0 1.25 
1 1.5 1.25 
+0

我編輯的問題,以澄清我的意圖,我明白如何劃分兩個單獨的列,但我想將計算應用於整個DataFrame, –