我想传递到此函数的数据帧进行修改。如何分配变量合并熊猫数据框内功能
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