판다스에서 알아두면 유용한 질문과 답변입니다.
질문 출처:
인풋 생성
# 인풋 데이터 프레임 생성 코드
import pandas as pd
import numpy as np
data1 = [['symbol', 'appl', 'goog', 'None', 'msft', 'None', 'None', 'None', 'None'],
['date', 'close', 'close', 'volume', 'close', 'open', 'high', 'low'],
['1999-01-10', 100, 101, 10000, 102, 103, 104, 105],
['1999-01-11', 200, 201, 20001, 202, 203, 204, 205]]
df = pd.DataFrame(data1)
df
질문 : 기존 데이터 프레임의 상위 2행을 멀티 인덱스로 설정하기
기존 데이터 프레임의 상위 2행을 멀티 인덱스로 설정해야 합니다.
첫 번째는 appl에 대해 close 열로 구성되어야 합니다.
두 번째는 goog에 대해 close, volume 열로 구성되어야 합니다.
마지막은 msft에 대해 open, high, low 열로 구성되어야 합니다.
답변
from_frame을 활용해 기존 데이터 프레임으로 멀티 인덱스를 생성하세요.
# df의 결측값을 채워서 상위 2행으로 멀티 인덱스를 생성
idx = pd.MultiIndex.from_frame(
df.ffill(axis=1).iloc[:2, 1:].T, names=['symbol', 'ohlcv'])
# 결과 생성
out = (df.iloc[2:, 1:] # df의 3행부터 모든 행, 2열부터 모든 열을 선택
.set_index(df.iloc[2:, 0]) # df에서 첫 번째 열을 인덱스로 설정
.rename_axis('date') # 인덱스명을 'date'로 설정
.set_axis(idx, axis=1) # 앞서 생성한 멀티 인덱스 idx를 컬럼즈로 설정
)
out:
유튜브에서 판다스 강의 중입니다
https://www.youtube.com/@KimPandas
'판다스 > 판다스 팁' 카테고리의 다른 글
[pandas] 수학적 연산 (2) | 2024.10.20 |
---|---|
[pandas] 기존 열을 수정하면서 새로운 열도 추가하는 방법 (0) | 2024.05.22 |
[pandas] 그룹의 순서를 유지하고 그룹 내에서 정렬하기 (0) | 2024.05.13 |
[pandas] 날짜가 속한 분기의 마지막 날 구하기 (0) | 2024.03.30 |
[pandas] 정렬시 매개 변수 key에 열마다 다른 함수 할당하기 (0) | 2024.03.29 |