2017-10-23 6 views
2

팬더에서 동일한 DataFrame 내에서 행을 교환하려고합니다.동일한 팬더 데이터 프레임 내에서 행 바꾸기

나는

a = pd.DataFrame(data = [[1,2],[3,4]], index=range(2), columns = ['A', 'B']) 
b, c = a.iloc[0], a.iloc[1] 
a.iloc[0], a.iloc[1] = c, b 

를 실행하려했지만 난 그냥 두 번째 행 (3,4)의 값을 표시하는 행을 모두 끝낸다.

변수 b와 c도 이제는 다시 지정하지 않았지만 이제는 모두 3과 4로 지정됩니다. 내가 뭔가 잘못하고 있는거야? 당신이 데이터를 직접 변경됩니다 복사 사용하지 않으면 체인 즉 그들을 할당하는 동안 값을 변경하기 때문에

자크

답변

3

사용을 임시 가변적이고은 .copy()를 사용하여 값을 저장합니다.

a = pd.DataFrame(data = [[1,2],[3,4]], index=range(2), columns = ['A', 'B']) 
b, c = a.iloc[0], a.iloc[1] 


temp = a.iloc[0].copy() 
a.iloc[0] = c 
a.iloc[1] = temp 

또는 직접

a = pd.DataFrame(data = [[1,2],[3,4]], index=range(2), columns = ['A', 'B']) 
b, c = a.iloc[0].copy(), a.iloc[1].copy() 
a.iloc[0],a.iloc[1] = c,b 
+0

아, 네이 문제를 해결처럼 복사 할 수 있습니다. 많은 감사합니다! 나는 가치가 사슬에 언제 있는지 아직도 불확실하다. 새로운 변수를 할당 할 때'.copy()'메서드를 사용하는 것이 더 안전하다고 말할 수 있습니까? – Zac

+0

기본적으로 기본 객체에 대한 참조를 보유합니다. 당신이하는 모든 변화는 주요 대상에 반영됩니다. 그래서 복사가 필요해. – Dark

+0

도움이 되었다면 해결책을 수락합니까? – Dark