2016-09-08 2 views
3

3 개의 데이터 프레임 df1, df, df3을 모두 원래 데이터 프레임 df0으로 복사합니다.데이터 프레임 복사 및 수정 팬더

df1=df0 
df2=df0 
df3=df0 

df1=dfo.iloc[1:,1:].div(dfo.iloc[1:,1:].sum(axis=1),axis=0) 
df2=dfo.iloc[1:,1:].div(dfo.iloc[1:,1:].sum(axis=1),axis=0)*ACCOUNT_CASH 
df3=df2//df0 

print(df1) 
print(df2) 
print(df3) 

는 어떻게 든이 작동하지 않습니다, 나는 오류를 얻을하지만 인쇄 할 때 DF1 DF2 DF3 내 모든 dataframes이 동일! 그러나 그들은 df0와 다릅니다. 왜냐하면 그것들은 모두 메모리의 같은 공간을 가리키고 있기 때문에 포인터를 변경하면 실제로 모든 변수가 변경됩니까? 그렇다면 어떻게하면 잘 작동하게 할 수 있을까요? 나는 결론적이지 않은 결과를 가진 copy (deep = True)를 시도했다. 감사합니다

답변

2

귀하의 라인은

df1=df0 
df2=df0 
df3=df0 

단순히 세 가지의 새로운 이름 df0에 의해 결합과 같은 객체를 참조 세 가지 새로운 바인딩을 만듭니다.

실제로 pd.DataFrame.copy를, 복사본을 만들 사용하려면

df1=df0.copy() 
df2=df0.copy() 
df3=df0.copy() 
+0

이 그것을 해결! 왜 copy (deep = True)가 작동하지 않는지 설명해 주시겠습니까? 감사합니다 – uniXVanXcel

+0

@Pythus 흥미 롭습니다 - 좀 살펴 보겠습니다 (잠시 후, 두려워요). –