我想傳遞到此函數的數據幀進行修改。如何分配變量合併熊貓數據框內功能
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()
之類的東西,但這隻能讓你做左連接。
這絕對有效!根據[這篇文章](https://stackoverflow.com/questions/38895768/python-pandas-dataframe-is-it-pass-by-value-or-pass-by-reference),使用全局變量可以使它很難跟蹤發生的變化,但這是我見過的最好的解決方案。 – haudarren