我在 Python Pandas 中有 DataFrame,如下所示:
COL1 | COL2 | ... | COLn
------|------|------|-------
aaa | AA_x | ... | ...
bbb | AA_x | ... | ...
ggg | AA_x | ... | ...
ppp | AA_x | ... | ...
aaa | DD_x | ... | ...
ggg | DD_x | ... | ...
ppp | DD_x | ... | ...
bbb | DD_x | ... | ...
.... | ... | ... | ...
COL1 是字串資料型別,我需要按照我自己的想法對 COL1 中基于 DataFrame 的值進行排序,例如:aaa,bbb,ppp,ggg,因此我需要以下內容:
COL2 | COL1 | ... | COLn
-------|-------|-------|------
AA_x | aaa | ... | ...
AA_x | bbb | ... | ...
AA_x | ppp | ... | ...
AA_x | ggg | ... | ...
DD_x | aaa | ... | ...
DD_x | bbb | ... | ...
DD_x | ppp | ... | ...
DD_x | ggg | ... | ...
... | .... | ... |...
我怎樣才能在 Python Pandas 中做到這一點?我假設手動喊這個 DataFrame 排序?
uj5u.com熱心網友回復:
IIUC,您想按 COL1 排序并保持相對 aaa/bbb/etc 的原始順序。
您可以使用:
order = ['aaa', 'bbb', 'ppp', 'ggg']
df['COL1'] = pd.Categorical(df['COL1'], categories=order, ordered=True)
out = (df.assign(n=df.groupby('COL1').cumcount())
.sort_values(by=['n', 'COL1'])
.drop(columns='n')
)
如果您已經有一個輔助列用于排序(例如 COL2):
order = ['aaa', 'bbb', 'ppp', 'ggg']
df['COL1'] = pd.Categorical(df['COL1'], categories=order, ordered=True)
out = df.sort_values(by=['COL2', 'COL1'])
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/517802.html
