假設我有以下數據框訂單數據幀
C1 C2
John 4 3
Bob 5 7
Mary 6 5
Carl 5 6
James 4 3
如何訂購我的數據框有:
卡爾·瑪麗,鮑勃,約翰,詹姆斯
以高效的方式?
這是一個任意排序,我可能會存儲在一個變量orderedNames名稱
假設我有以下數據框訂單數據幀
C1 C2
John 4 3
Bob 5 7
Mary 6 5
Carl 5 6
James 4 3
如何訂購我的數據框有:
卡爾·瑪麗,鮑勃,約翰,詹姆斯
以高效的方式?
這是一個任意排序,我可能會存儲在一個變量orderedNames名稱
定義排序
arbitrary_ordering = ['Carl', 'Mary', 'Bob', 'John', 'James']
選項1
loc
df.loc[arbitrary_ordering]
選項2
reindex
df.reindex(arbitrary_ordering)
選項3
reindex_axis
df.reindex_axis(arbitrary_ordering)
所有得到
C1 C2
Carl 5 6
Mary 6 5
Bob 5 7
John 4 3
James 4 3
替代1
df.iloc[df.index.to_series().map(arbitrary_ordering.index)]
替代2
pd.Categorical
df.index = pd.Categorical(df.index, categories=arbitrary_ordering)
df.sort_index()
時間測試
您可以使用arbirtrarly loc
(假設你的數據在df
)責令
df.loc[['Carl', 'Mary', 'Bob', 'John', 'James'], :]
但是,如果要通過列的子集,命令他們使用sort_values
df.sort_values(by='C1')
甚至更高級的將是定製鍵功能排序。看到這個問題:pandas sort lambda function
閱讀有關'.sort_values()'方法或'.sort_index()'取決於你的目標... – MaxU
什麼樣的排序是?任意?如果是這樣,你有他們在一個列表或類似的集合? – ayhan
是的,請參考最新的問題 – Thegamer23