私の質問は、参照渡し時のpandas DataFrameの不変性に関するものです。 fooがpandas DataFrameを参照渡し
def foo(df1, df2):
df1 = df1.join(df2['C'], how='inner')
df1['B'] = 1
return()
(すなわち "として定義されている場合、出力は、
A B
0 0 1
1 2 1
2 4 1
3 6 1
4 8 1
はなく実際に
A B C
0 0 1 1
1 2 1 3
2 4 1 5
3 6 1 7
4 8 1 9
ある
import pandas as pd
def foo(df1, df2):
df1['B'] = 1
df1 = df1.join(df2['C'], how='inner')
return()
def main(argv = None):
# Create DataFrames.
df1 = pd.DataFrame(range(0,10,2), columns=['A'])
df2 = pd.DataFrame(range(1,11,2), columns=['C'])
foo(df1, df2) # Pass df1 and df2 by reference.
print df1
return(0)
if __name__ == '__main__':
status = main()
sys.exit(status)
:次のコードを考えてみましょう他のステートメントの前に「join」ステートメント)出力は単純です
A
0 0
1 2
2 4
3 6
4 8
私はなぜこのような場合に興味がありますか?どんな洞察にも感謝します。
を書くことができところで、復帰は関数ではありません、それだけの文だので、あなたはそれの後の括弧は必要ありません。 – Jezzamon
[This](http://nedbatchelder.com/text/names.html)は、私が知っているPythonの名前がどのように動作するかについての最良の議論です。理解すれば、この行動を理解するでしょう。 – chthonicdaemon
ありがとう@chthonicdaemon! – labrynth