이것은 사용하여 수행 할 수 있습니다 df.pivot()
, df.reorder_levels()
하고 df.sort_index()
.
df.pivot()
: 테이블을 계층 열로 전치
axis=1
열을 axis=0
참조하고 행 을 참조합니다.df.reorder_levels()
: City를 위로, Vals를 아래로 이동df.sort_index()
: 기본 또는 사용자 정의 순서를 사용하여 행과 열을 정렬합니다 (예 : datetime
대신 정렬 str
).코드 :
import pandas as pd
import numpy as np
df = pd.DataFrame(
data={ # please provide sample data next time
"City": ["NYC"]*5 + ["LA"]*5 + ["OKC"]*5,
"Date": ["6/1/1998", "7/1/1998", "8/1/1998", "9/1/1998", "10/1/1998"]*3,
"Val1": np.array(range(15))*10,
"Val2": np.array(range(15))/10,
"Val3": np.array(range(15)),
}
)
df_out = df.pivot(index="Date", columns=["City"], values=["Val1", "Val2", "Val3"])\
.reorder_levels([1, 0], axis=1)\
.sort_index(axis=1)\
.sort_index(axis=0, key=lambda s: pd.to_datetime(s))
출력 :
In[27]: df_out
Out[27]:
City LA NYC OKC
Val1 Val2 Val3 Val1 Val2 Val3 Val1 Val2 Val3
Date
6/1/1998 50.0 0.5 5.0 0.0 0.0 0.0 100.0 1.0 10.0
7/1/1998 60.0 0.6 6.0 10.0 0.1 1.0 110.0 1.1 11.0
8/1/1998 70.0 0.7 7.0 20.0 0.2 2.0 120.0 1.2 12.0
9/1/1998 80.0 0.8 8.0 30.0 0.3 3.0 130.0 1.3 13.0
10/1/1998 90.0 0.9 9.0 40.0 0.4 4.0 140.0 1.4 14.0
참고 왼쪽 상단의 "도시"레이블을 제거하려면 df_out.columns.names
직접 설정하십시오 .
df_out.columns.names=[None, None]
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다