반응형
pandas데이터프레임 다중 인덱스에서 열 선택
다음 pd가 있습니다.데이터 프레임:
Name 0 1 ...
Col A B A B ...
0 0.409511 -0.537108 -0.355529 0.212134 ...
1 -0.332276 -1.087013 0.083684 0.529002 ...
2 1.138159 -0.327212 0.570834 2.337718 ...
MultiIndex 열이 있습니다.names=['Name', 'Col']
그리고 계층적인 수준들.Name
라벨은 0에서 n까지이고, 각각의 라벨에는 2개가 있습니다.A
그리고.B
기둥들
나는 모든 것을 하위 선택하고 싶습니다.A
(또는B
) 이 DataFrame의 열입니다.
있습니다.get_level_values
부울 인덱싱과 함께 사용하여 의도한 결과를 얻을 수 있는 메서드입니다.
In [13]:
df = pd.DataFrame(np.random.random((4,4)))
df.columns = pd.MultiIndex.from_product([[1,2],['A','B']])
print df
1 2
A B A B
0 0.543980 0.628078 0.756941 0.698824
1 0.633005 0.089604 0.198510 0.783556
2 0.662391 0.541182 0.544060 0.059381
3 0.841242 0.634603 0.815334 0.848120
In [14]:
print df.iloc[:, df.columns.get_level_values(1)=='A']
1 2
A A
0 0.543980 0.756941
1 0.633005 0.198510
2 0.662391 0.544060
3 0.841242 0.815334
방법 1:
df.xs('A', level='Col', axis=1)
자세한 내용은 http://pandas.pydata.org/pandas-docs/stable/advanced.html#cross-section 을 참조하십시오.
방법 2:.
df.loc[:, (slice(None), 'A')]
주의 사항: 이 메서드를 사용하려면 레이블을 정렬해야 합니다.자세한 내용은 http://pandas.pydata.org/pandas-docs/stable/advanced.html#the-need-for-sortedness-with-multiindex 을 참조하십시오.
EDIT* 현재 가장 좋은 방법은 indexSlice를 사용하여 다중 인덱스를 선택하는 것입니다.
idx = pd.IndexSlice
A = df.loc[:,idx[:,'A']]
B = df.loc[:,idx[:,'B']]
언급URL : https://stackoverflow.com/questions/25189575/pandas-dataframe-select-columns-in-multiindex
반응형
'programing' 카테고리의 다른 글
swift는 subview를 추가하여 제거합니다. (0) | 2023.10.23 |
---|---|
각지지 않은 페이지 내에 각지지 않은 2가지 구성요소 분사 (0) | 2023.10.23 |
문자열의 마지막 4자를 얻는 방법은? (0) | 2023.10.23 |
텍스트를 변경할 때마다 UITtextView가 맨 위로 스크롤되도록 하려면 어떻게 해야 합니까? (0) | 2023.10.23 |
관계 열은 어디서 같습니까? (0) | 2023.10.23 |