2017-02-04 3 views
0

모든 dataframes를 업데이트 할 것 같다내가이 같은 두 팬더의 dataframes을 구축했습니다

import panda as pd 
d = {'FIPS' : pd.Series(['01001', '01002']), 'count' : pd.Series([3, 4])} 
df1 = pd.DataFrame(d) 
df2 = df1 

내가 DF2의 값 중 하나를 변경하고 싶습니다. 이것은 내가 시도한 것입니다 :

df2.loc[df2['FIPS'] == '01001','FIPS'] = '01003' 

이 줄은 df1과 df2를 모두 업데이트하는 것으로 보이지만 그 이유는 알 수 없습니다.

+1

리드 (Reid), 아래 1 월의 답변이 귀하의 질문에 답변 한 경우 답변으로 수락하십시오. – zelusp

답변

0

df2 = df1 대신, 예 : df2 = df1.copy().

파이썬의 변수는 복잡한 데이터 구조를 지정할 때 "포인터"처럼 작동한다는 것이 문제입니다. 실제 값이 아닌 해당 값에 대한 참조를 저장합니다. 위의 코드에서 df2는 df1의 다른 이름 또는 별칭이됩니다. 따라서 예상치 못한 변화.

1

df2은 단지 df1입니다. 그들은 다른 이름으로 만 메모리에있는 동일한 객체를 가리 킵니다. 당신이 df2=df1.copy()을 할 경우 수입 팬더 :)에 오타가 it..plus 그것은 df2에 대한 새로운 메모리 만 갱신을 만들어야합니다

당신은 객체가 id(df1)로에 위치한 어떤 메모리 주소를 확인하고 그 같은를 볼 수 있습니다

df2.copy() 방법을 사용하면 변경됩니다.

안녕하세요!

+0

정말 고마워요! 이 질문에 대한 답변입니다. 변수 이름에 데이터 프레임을 할당하는 것이 정수를 할당하는 것과 너무 다르다는 것을 전혀 몰랐습니다. – Reid

+0

좋아요! :) 옆에있는 체크 버튼을 클릭하면 내 대답을 수락 할 수 있습니다. SO 커뮤니티를 즐기십시오. –