LoginSignup
2
0

[Python] DataFrame型の引数を関数内で変更した時の挙動について

Last updated at Posted at 2022-11-05

背景

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型を引数渡しした時、呼び出し元の変数も更新された。
(ミュータブルなオブジェクトだと思われる。)

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0