Hatena::ブログ(Diary)

My Life as a Mock Quant このページをアンテナに追加 RSSフィード Twitter

2017-09-22

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

| 11:19 | 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が指しているデータを変更するような操作はない。

ゆ 2017/09/22 12:36 これはPandas関係なくて、

a = 1

def f(x):
x = 2

f(a)

とやっても当然aは1のままですよね、という話だと思いました。