2017-02-16 10 views
1
時間から

開発因子トン時間トン+ 1トン+ 1/トンあります。私は以下のようになりますパンダのデータフレームにこの計算を適用しようとしています:計算開発因子使用パンダは、データフレーム

 
    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によってEDIT:

除算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

私は意図を明確にするために質問を編集しました。私は2つの個々の列を分割する方法を理解していますが、計算をDataFrame全体に適用したいので、 –

関連する問題