この関数に渡されるデータフレームを変更したいと思います。ファンクション内でマージされたPandasデータフレームに変数を割り当てる方法
def func(df):
left_df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
right_df = pd.DataFrame([[5, 6], [7, 8]], columns=['C', 'D'])
df = pd.merge(left_df, right_df, how='outer', left_index=True, right_index=True)
print("df is now a merged dataframe!")
test = pd.DataFrame()
func(test)
Pythonは値を通過するので、被呼func()
元の空のデータフレームを指すdf
のコピーを取得します。マージされたデータフレームに割り当てられると、pd.merge()
によって返された新しいオブジェクトが作成され、df
がこの新しいオブジェクトに追加されます。ただし、test
は変更されず、元の空のデータフレームを指し続けます。
func()
ではどのように組み込みますか?test
は実際に変更されていますか?私はpandas.DataFrame.update()
のようなものが欲しいですが、これはあなたが左の結合を行うことができます。
これは間違いなく機能します。 [this post](https://stackoverflow.com/questions/38895768/python-pandas-dataframe-is-it-pass-by-value-or-pass-by-reference)によると、グローバル変数を使用すると、変更が発生した場所を追跡することは困難ですが、これは私が見てきた最良の解決策です。 – haudarren