이 함수에 전달 된 데이터 프레임을 수정하고 싶습니다. 파이썬은 값으로 전달하기 때문에함수 내에서 병합 된 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)
그러나, 호출 수신자 func()
은 원래 빈 dataframe을 가리키는 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