Pandasの参照先が変わるタイミング

よくわからんので、とりあえずメモ

以下

import pandas as pd
def hoge(x):
    x.iloc[1] = 100

df = pd.DataFrame({'A': range(3)})
hoge(df)
df

を実行すると

   A
0 0
1 100
2 2

となるので、hoge関数にはdfのポインタ(参照)が渡されているのがわかる、これはいい。

一方、以下

def hoge2(x):
    x = pd.DataFrame.from_items([('A', [1])])

df = pd.DataFrame({'A': range(3)})
hoge2(df)
df

を実行すると

   A
0 0
1 1
2 2

となり、元の変数(df)がそのまま出てくる。
従って、関数内でdfが指しているデータを変更するような操作はない。