按两列排序,其中第一列已在 pandas 中排序

问题描述 投票:0回答:1

我有一种大 DataFrame,因此无法在 O(n²) 上排序。我想按两列排序,其中一列已经排序。

df = pd.DataFrame({
    'col1': [ 0, 0, 1, 2, 2, 2],
    'col2': [ 'c', 'a', 'b', 'e', 'h', 'f']
})
df2 = sort_ordered(df, 'col1', 'col2')
assert df2.equals(df.sort_values(['col1', 'col2']))

假设第一列已经排序,我如何按这两列排序。这样,它就不再是 O(n²),而是 O(n*k),其中 k 是第一列的每个“分区”中的元素数量(1 到 10 之间),这将是一个主要是线性的算法.

python pandas dataframe algorithm sorting
1个回答
0
投票
import pandas as pd

df= pd.DataFrame({
    'col1': [ 0, 0, 1, 2, 2, 2],
    'col2': [ 'c', 'a', 'b', 'e', 'h', 'f']
})

df2 = df.sort_values(by = ['col1', 'col2'])
print(df2) 

输出:

   col1 col2
1     0    a
0     0    c
2     1    b
3     2    e
5     2    f
4     2    h
© www.soinside.com 2019 - 2024. All rights reserved.