프로그래밍 언어/Python

Pandas 데이터 프레임에서 여러 열 선택

Rateye 2021. 7. 20. 10:43
728x90
반응형

 

질문 : Pandas 데이터 프레임에서 여러 열 선택

다른 열에 데이터가 있지만 다른 변수에 저장하기 위해 추출하는 방법을 모르겠습니다.

index  a   b   c
1      2   3   4
2      3   4   5

'a' , 'b' 하고 df1에 저장하려면 어떻게해야합니까?

나는 시도했다

df1 = df['a':'b']
df1 = df.ix[:, 'a':'b']

아무것도 작동하지 않는 것 같습니다.

답변

열 이름 (문자열)은 시도한 방식으로 분할 할 수 없습니다.

여기에 몇 가지 옵션이 있습니다. 어떤 변수를 잘라 내고 싶은지 컨텍스트에서 알고 있다면 목록을 __getitem__ 구문 ([] 's)에 전달하여 해당 열만보기를 반환 할 수 있습니다.

df1 = df[['a', 'b']]

또는 이름이 아닌 숫자로 인덱싱하는 것이 중요하다면 (코드가 처음 두 열의 이름을 몰라도이 작업을 자동으로 수행해야 함) 대신 다음을 수행 할 수 있습니다.

df1 = df.iloc[:, 0:2] # Remember that Python does not slice inclusive of the ending index.

또한 Pandas 개체와 해당 개체의 복사본에 대한보기의 개념을 숙지해야합니다. 위의 첫 번째 메서드는 원하는 하위 개체 (원하는 슬라이스)의 메모리에 새 복사본을 반환합니다.

그러나 때때로 Pandas에는이를 수행하지 않고 대신 원래 객체의 하위 객체 또는 슬라이스와 동일한 메모리 청크를 참조하는 새 변수를 제공하는 인덱싱 규칙이 있습니다. 이것은 두 번째 인덱싱 방법에서 발생하므로 copy() 함수로 수정하여 일반 복사본을 얻을 수 있습니다. 이 경우 슬라이스 된 객체라고 생각하는 것을 변경하면 원본 객체가 변경 될 수 있습니다. 항상 이것을 조심하는 것이 좋습니다.

df1 = df.iloc[0, 0:2].copy() # To avoid the case where changing df1 also changes df

iloc 을 사용하려면 열 위치 (또는 인덱스)를 알아야합니다. 칼럼 위치가 변경 될 수 있으므로 대신 하드 코딩 인덱스의 경우 사용 iloc 함께 get_loc 의 기능 columns 열 인덱스를 얻기 위해 dataframe 물체의 제조 방법.

{df.columns.get_loc(c): c for idx, c in enumerate(df.columns)}

이제이 사전을 사용하여 이름과 iloc 사용하여 열에 액세스 할 수 있습니다.

출처 : https://stackoverflow.com/questions/11285613/selecting-multiple-columns-in-a-pandas-dataframe
728x90
반응형