假设我有以下数据框订单数据帧
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