2017-11-29 10 views
0

私は、データフレームへの適用の影響を把握しようとしており、各行で同じ変更が行われることを期待しています。次のプログラムの結果を把握することができません:関数が突然変化する関数を適用する

import pandas as pd 
    def fun(x): 
     x[0]=x[0]*2 
     return x 

    df=pd.DataFrame({"a":[1,2,3], "b":[11,12,13], "c":[10,20,30]}) 
    df=df.apply(fun,axis=1) 
    df=df.apply(fun,axis=1) 
    print df 


私はこのことを理解して助けてください。前もって感謝します。 xの値は[0]行0が急激に第二「適用」の4の倍数で変化しているため8,11,10 :

が期待行が0インデックス付け:4,11,10
しなくなった行は0をインデックス付け。現在の実装では

+0

'df.ilocの[:、0] = df.ilocの[:0] * 2'あなたが欲しいものを行う必要があります。 – jlandercy

答えて

2

ノート

は、コールは、それが高速または低速コードパスを取ることができるかどうかを決定するために二回最初 列/行のFUNC当てはまります。 が最初の列/行に対して2回適用されるため、funcに副作用があると予期しない動作が発生する可能性があります。

二回適用

Source

関連する問題