팬더스 MultiIndex 데이터프레임에서 행 선택하기
팬더스 MultiIndex 데이터프레임에서 행 선택하기
이번 해설에서는 팬더스 MultiIndex 데이터프레임에서 특정 행을 선택하는 다양한 방법을 살펴봅니다.
기본적인 방법
- iloc 속성 사용: iloc 속성은 행의 위치 기반으로 행을 선택합니다. 다음 예시에서는 0번째, 2번째, 4번째 행을 선택합니다.
df.iloc[[0, 2, 4]]
df.loc[['a', 'c', 'e']]
슬라이싱 사용
- 단일 레벨 인덱스: 슬라이싱을 사용하여 연속된 행을 선택할 수 있습니다. 다음 예시에서는 1번째부터 3번째 행까지 선택합니다.
df[1:4]
- 다중 레벨 인덱스: 슬라이싱을 여러 레벨에 적용하여 특정 조건에 맞는 행을 선택할 수 있습니다. 다음 예시에서는 'A' 레벨에서 'a'와 'b' 인덱스를 가진 행, 'B' 레벨에서 1 이상 3 이하 값을 가진 행을 선택합니다.
df.loc[('A', ['a', 'b']), ('B', 1:3)]
불린 인덱싱 사용
- 조건에 맞는 행 선택: 불린 인덱싱을 사용하여 조건에 맞는 행을 선택할 수 있습니다. 다음 예시에서는 'C' 열 값이 5 이상인 행을 선택합니다.
df[df['C'] >= 5]
팬더스 함수 사용
- .head() 함수: .head() 함수는 데이터프레임의 처음 n개 행을 선택합니다. 다음 예시에서는 처음 3개 행을 선택합니다.
df.head(3)
df.tail(2)
예시
다음 코드는 MultiIndex 데이터프레임을 만들고 다양한 방법으로 행을 선택하는 예시입니다.
import pandas as pd
df = pd.DataFrame({'A': ['a', 'b', 'c', 'd', 'e'],
'B': [1, 2, 3, 4, 5],
'C': [10, 20, 30, 40, 50]},
index=[('A', 'a'), ('A', 'b'), ('B', 'c'), ('B', 'd'), ('C', 'e')])
# 기본적인 방법
print(df.iloc[[0, 2, 4]])
print(df.loc[['a', 'c', 'e']])
# 슬라이싱 사용
print(df[1:4])
print(df.loc[('A', ['a', 'b']), ('B', 1:3)])
# 불린 인덱싱 사용
print(df[df['C'] >= 5])
# 팬더스 함수 사용
print(df.head(3))
print(df.tail(2))
예제 코드
import pandas as pd
# MultiIndex 데이터프레임 생성
df = pd.DataFrame({'A': ['a', 'b', 'c', 'd', 'e'],
'B': [1, 2, 3, 4, 5],
'C': [10, 20, 30, 40, 50]},
index=[('A', 'a'), ('A', 'b'), ('B', 'c'), ('B', 'd'), ('C', 'e')])
# 기본적인 방법
print("## 기본적인 방법")
print(df.iloc[[0, 2, 4]])
print(df.loc[['a', 'c', 'e']])
# 슬라이싱 사용
print("## 슬라이싱 사용")
print(df[1:4])
print(df.loc[('A', ['a', 'b']), ('B', 1:3)])
# 불린 인덱싱 사용
print("## 불린 인덱싱 사용")
print(df[df['C'] >= 5])
# 팬더스 함수 사용
print("## 팬더스 함수 사용")
print(df.head(3))
print(df.tail(2))
## 기본적인 방법
A B C
0 a 1 10
2 c 3 30
4 e 5 50
A B C
0 a 1 10
2 c 3 30
4 e 5 50
## 슬라이싱 사용
A B C
1 b 2 20
2 c 3 30
3 d 4 40
A B C
0 a 1 10
1 b 2 20
## 불린 인덱싱 사용
A B C
2 c 3 30
3 d 4 40
4 e 5 50
## 팬더스 함수 사용
A B C
0 a 1 10
1 b 2 20
2 c 3 30
D E F
3 d 4 40
4 e 5 50
팬더스 MultiIndex 데이터프레임에서 행 선택하기: 대체 방법
.query() 함수 사용:
.query() 함수는 조건식을 사용하여 데이터프레임의 행을 선택할 수 있습니다. 다음 예시에서는 'C' 열 값이 30 이상인 행을 선택합니다.
df.query('C >= 30')
.filter() 함수 사용:
df.filter(lambda x: x['A'] == 'a')
.isin() 함수 사용:
.isin() 함수는 특정 값 목록에 포함된 인덱스를 가진 행을 선택할 수 있습니다. 다음 예시에서는 'a', 'c', 'e' 인덱스를 가진 행을 선택합니다.
df.loc[df.index.isin(['a', 'c', 'e'])]
.get_loc() 함수 사용:
.get_loc() 함수는 특정 값의 위치를 찾을 수 있습니다. 다음 예시에서는 'c' 인덱스의 위치를 찾고 해당 행을 선택합니다.
df.iloc[df.index.get_loc('c')]
for 루프 사용:
for 루프를 사용하여 데이터프레임을 반복하고 조건에 맞는 행을 선택할 수 있습니다. 다음 예시에서는 'B' 열 값이 짝수인 행을 선택합니다.
result = []
for i in range(len(df)):
if df.loc[i, 'B'] % 2 == 0:
result.append(df.iloc[i])
df = pd.DataFrame(result)
python pandas dataframe