반응형
Pandas 데이터 프레임의 목록을 기준으로 색인된 행의 순서를 변경하는 방법
다음과 같은 데이터 프레임이 있습니다.
company Amazon Apple Yahoo
name
A 0 130 0
C 173 0 0
Z 0 0 150
다음 코드를 사용하여 작성되었습니다.
import pandas as pd
df = pd.DataFrame({'name' : ['A', 'Z','C'],
'company' : ['Apple', 'Yahoo','Amazon'],
'height' : [130, 150,173]})
df = df.pivot(index="name", columns="company", values="height").fillna(0)
행을 정렬하는 작업(인덱스 포함)name
) 사전 정의된 목록에 따라:
["Z", "C", "A"]`
결과는 다음과 같습니다.
company Amazon Apple Yahoo
name
Z 0 0 150
C 173 0 0
A 0 130 0
어떻게 하면 그것을 이룰 수 있을까요?
다음을 사용하여 미리 정의된 순서로 인덱스를 설정할 수 있습니다.reindex
맘에 들다
In [14]: df.reindex(["Z", "C", "A"])
Out[14]:
company Amazon Apple Yahoo
Z 0 0 150
C 173 0 0
A 0 130 0
하지만 알파벳 순서일 경우에는sort_index(ascending=False)
In [12]: df.sort_index(ascending=False)
Out[12]:
company Amazon Apple Yahoo
name
Z 0 0 150
C 173 0 0
A 0 130 0
아래에 지적된 것처럼, 당신은 그것을 어떤 변수에 할당해야 합니다.
In [13]: df = df.sort_index(ascending=False)
우리는 또한 사용할 수 있습니다.loc
:
lst = ["Z", "C", "A"]
df = df.loc[lst]
출력:
company Amazon Apple Yahoo
name
Z 0 0 150
C 173 0 0
A 0 130 0
에 값이 있는 경우lst
존재하지 않는df.index
(예를 들어 만약에)lst=['Z','C','A','D']
), 그 다음loc
키 오류를 발생시킵니다(반면reindex
새 행을 만듭니다.'D'
NaN이 가득합니다).
다중 색인
한다면df
다음과 같은 MultiIndex입니다.
C3
C1 C2
2 evelen 0
ten 1
twelve 2
1 evelen 3
ten 4
twelve 5
그리고 만약 당신이 두번째 레벨을 다음과 같이 분류하고 싶다면.ten
,eleven
그리고.twelve
, 그 다음에 사용하기loc
:
out = df.loc[:, ['ten','evelen', 'twelve'],:]
출력:
C3
C1 C2
2 evelen 0
ten 1
twelve 2
1 evelen 3
ten 4
twelve 5
두 수준 모두에 대해:
out = df.loc[[1,2], ['ten','evelen','twelve'], :]
출력:
C3
C1 C2
1 ten 4
evelen 3
twelve 5
2 ten 1
evelen 0
twelve 2
IMHO, 특히 여러 값으로 정렬하려면 다음과 같은 것이 가장 좋습니다.
df = df.set_index("C1")
df = df.sort_values(["C1", "C2"])
df.reset_index(inplace=True)
언급URL : https://stackoverflow.com/questions/30009948/how-to-reorder-indexed-rows-based-on-a-list-in-pandas-data-frame
반응형
'IT' 카테고리의 다른 글
Path variables in Spring WebSockets @SendTo mapping (0) | 2023.09.25 |
---|---|
Oracle에서 SQL Server 게시 (0) | 2023.09.20 |
MySQL 쿼리를 예약하는 방법은? (0) | 2023.09.20 |
wc_empty_cart_message 기능을 wcoCommerce 3.1에서 변경 (0) | 2023.09.20 |
오라클 고유 수행 정렬 (0) | 2023.09.20 |