背景
C言語上がりのプログラマであり、DataFrame型を引数渡しした時の挙動について調査したい。
1次調査結
・pythonでは参照渡しで関数に引き渡されるが、引数に指定したオブジェクトがイミュータブル(変更できない)なオブジェクトなのかミュータブル(変更できる)なオブジェクトなのかによって呼び出し元の変数も更新されるか挙動が異なる
→ DataFrame型で実際に試してみる。
<参考>
https://www.javadrive.jp/python/userfunc/index3.html
2次調査結果
ソースコード
import pandas as pd
def add_height(master_df):
master_df['Height'] = [170, 171, 175]
print(master_df)
data = { 'Name':['Shota','Akebono','Yamaoto'],
'Weight':[60,99,55] }
df = pd.DataFrame(data)
print(df)
add_height(df)
print(df)
出力結果
Name Weight
0 Shota 60
1 Akebono 99
2 Yamaoto 55
Name Weight Height
0 Shota 60 170
1 Akebono 99 171
2 Yamaoto 55 175
Name Weight Height
0 Shota 60 170
1 Akebono 99 171
2 Yamaoto 55 175
結論
DataFrame型を引数渡しした時、呼び出し元の変数も更新された。
(ミュータブルなオブジェクトだと思われる。)