DataFrameで”=”を使うと、DataFrameのデータは参照渡しになる。
※参照渡し:変数の受け取り側が変数を参照できる形式で、変数を渡す方法のこと。参照渡しを行った変数の内容を、呼び出し先で変更すると、呼び出し元の変数を直接操作するのと同じ状態になる。
例えば、 0埋めしたDataFrameがあるとする。
data_df= pd.DataFrame(index=range(3), columns=['val1', 'val2'])
data_df.fillna(0, inplace=True)
print(data_df)
val1 val2
0 0 0
1 0 0
2 0 0
“=”で参照渡しをし、値を書き換える。
new_data_df = data_df
new_data_df.val1[2] = 3
new_data_df.val2[0] = 5
元のデータも値が変わる。
# data_df
val1 val2
0 0 5
1 0 0
2 3 0
# new_data_df
val1 val2
0 0 5
1 0 0
2 3 0
参照渡ししたくないとき(単にDataframeをコピーしたいとき)は、copy()を使う。
new_data_df = data_df.copy()
new_data_df.val1[2] = 3
new_data_df.val2[0] = 5
コピー先だけ変更され、元のDataframeはコピー先の変更の影響を受けない。
# data_df
val1 val2
0 0 0
1 0 0
2 0 0
# new_data_df
val1 val2
0 0 5
1 0 0
2 3 0
コメント