pandas DataFrame 할당에 대한 참고 사항 설명(index)
설명, b의 열을 a에게 부여
상황 1:a, b index 설정 동일
다음 코드
import pandas as pd
import numpy as np
a = pd.DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('wxyz'))
b = pd.DataFrame(np.array([11,22,33,44]),index=list('abcd'),columns=['m'])
a['m'] = b['m']
print(a)
상술한 코드 결과는 다음과 같다
w x y z m
a 0 1 2 3 11
b 4 5 6 7 22
c 8 9 10 11 33
d 12 13 14 15 44
상황은 가장 기본적인 상황이고 결과도 기대에 부합된다. 기대에 부합되는 이유는 a, b가 모두 같은 index를 설치하고 값 부여 조작은 index에 따라 오기 때문이다.만약 b가 Index를 설정하지 않고 기본 index를 사용한다면?상황 2:b의 index는 기본값을 사용합니다
코드는 다음과 같습니다.
import pandas as pd
import numpy as np
a = pd.DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('wxyz'))
b = pd.DataFrame(np.array([11,22,33,44]),columns=['m'])
a['m'] = b['m']
print(a)
결과는 다음과 같다.
w x y z m
a 0 1 2 3 NaN
b 4 5 6 7 NaN
c 8 9 10 11 NaN
d 12 13 14 15 NaN
상황 2, 결과는 상상을 초월했다. b의 index는 0, 1, 2, 3로 a의 index('a','b','c','d')와 다르다. 값을 부여하는 과정에서 a의 index에 따라 b에서 index와 같은 위치를 찾는 값이다. index가 다르기 때문에 a에게 NaN을 부여한다.상황 3: b의 일부 Index는 a와 동일
코드는 다음과 같습니다.
import pandas as pd
import numpy as np
a = pd.DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('wxyz'))
b = pd.DataFrame(np.array([11,22,33,44]),index=list('arpb'),columns=['m'])
a['m'] = b['m']
print(a)
결과는 다음과 같다.
w x y z m
a 0 1 2 3 11.0
b 4 5 6 7 44.0
c 8 9 10 11 NaN
d 12 13 14 15 NaN
상황 3 결과에서 알 수 있듯이 Index와 같은 줄만 값을 부여해야 성공할 수 있다요약:
위에서 알 수 있듯이 Pandas DataFrame은 Index에 따라 엄격하게 값을 부여하고 Index가 다르면 NaN
추가:python 프로그래밍 과정에서 DataFrame이 특정 셀 값을 수정한 후 원 데이터가 변하지 않는 해결 방안
최근에 한 경기에 참가했는데, 그 안에서 데이터 세척 작업을 설계하였는데, 일부 이상값에 대해 수정을 해야 한다. 평소에 나는 이렇게 조작했다
df[condition]['column'].iloc[0:3] = ......
혹은
df[condition]['column'][0:3] = ......
안에condition은 조건을 만족시키는 논리적 표현식을 대표하고,column은 열의 이름을 나타낸다일반적으로 여전히 유용하지만 간혹 오류가 발생할 수 있습니다. 주로 df[condition]라는 표현은python에서 규범에 맞지 않기 때문에 실행 후 칸에 값을 부여하는 데 실패하기 쉽습니다.여러 가지 방법을 시도한 후에 마지막에는 규범화된 loc나iloc표현을 사용한다
df.loc[[row condition],['column']] = ......
예:
NA.loc[[23,29,49],' '] = ......
혹은
df.iloc[np.where(condition),[1:3]]
loc에 연결된 것은 구체적인 행렬 이름이고iloc에 연결된 것은 조건을 만족시키는 행렬 이름에 대응하는 위치 숫자 목록입니다. 헷갈리지 마세요!이상의 개인적인 경험으로 여러분께 참고가 되었으면 좋겠습니다. 또한 많은 응원 부탁드립니다.만약 잘못이 있거나 완전한 부분을 고려하지 않으신다면 아낌없이 가르침을 주시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Pandas】DatetimeIndex란? no.29안녕하세요, 마유미입니다. Pandas에 대한 기사를 시리즈로 작성하고 있습니다. 이번은 제29회의 기사가 됩니다. 에서 Pandas의 시간에 대한 모듈에 대해 씁니다. 이번 기사에서는, 「DatetimeIndex」...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.