複製されたパンダのDataFrameを変更するのに少し問題があり、複製と元のDataFrameの両方に編集が適用されません。
これが例です。辞書のリストから任意のDataFrameを作成するとします。
In [67]: d = [{'a':3, 'b':5}, {'a':1, 'b':1}]
In [68]: d = DataFrame(d)
In [69]: d
Out[69]:
a b
0 3 5
1 1 1
次に、「d」データフレームを変数「e」に割り当て、applyを使用して列「a」に任意の計算を適用します。
In [70]: e = d
In [71]: e['a'] = e['a'].apply(lambda x: x + 1)
問題は、適用関数が重複したDataFrame'e'と元のDataFrame'd'の両方に明らかに適用されるという点で発生します。これは、私が一生理解できないことです。
In [72]: e # duplicate DataFrame
Out[72]:
a b
0 4 5
1 2 1
In [73]: d # original DataFrame, notice the alterations to frame 'e' were also applied
Out[73]:
a b
0 4 5
1 2 1
パンダのドキュメントとGoogleの両方を検索して、そうなる理由を探しましたが、役に立ちませんでした。ここで何が起こっているのか全く理解できません。
また、要素ごとの演算(たとえば)を使用して数学演算を試しましたe['a'] = [i + 1 for i in e['a']]
が、問題は解決しません。私が気付いていないパンダのDataFrameタイプに癖はありますか?誰かが提供できるかもしれない洞察に感謝します。