みんな、普通に
df = pd.DataFrame(data=[(0,1),(2,3)])
df2 = df
df2.ix[0,0]=9999
print(df)
print(df2)
て書いてるけど
さて、どんな表示がされるでしょうか?
答え
0 1 0 9999 1 1 2 3 0 1 0 9999 1 1 2 3
ん!?
コピー元まで変わってる!?
どうもpandasの=はデータのコピーではなく、C言語的に言うとアドレス(ポインタ)を渡すだけ。
つまり、データがある場所のリンクを渡しているだけです。
なので、普通の感覚で値がコピーされると思って使っていると思わぬところでバグを生みます。
C言語とかならヘッダファイル見れば入出力の型はわかるのですが、pythonはないんですよね。
APIリファレンスとか見てもいまいちよくわからないから、動かしてみるしかないという…。
pythonってすごくわかりにくい。