小编use*_*068的帖子

使用 Key 参数按多列对 Pandas 数据框进行排序

我有一个带有以下列的 pandas 数据框数据框:

df = pd.DataFrame([
    ['A2', 2],
    ['B1', 1],
    ['A1', 2],
    ['A2', 1],
    ['B1', 2],
    ['A1', 1]], 
  columns=['one','two'])
Run Code Online (Sandbox Code Playgroud)

我希望主要按“二”列排序,然后按“一”列排序。对于辅助排序,我想使用自定义排序规则,该规则将按字母字符[A-Z]和尾随数字对列“一”进行排序[0-100]。因此,排序的结果将是:

one two
 A1   1
 B1   1
 A2   1
 A1   2
 B1   2
 A2   2
Run Code Online (Sandbox Code Playgroud)

在使用排序规则之前,我已经对类似于“一”列的字符串列表进行了排序:

def custom_sort(value):
    return (value[0], int(value[1:]))

my_list.sort(key=custom_sort)
Run Code Online (Sandbox Code Playgroud)

如果我尝试通过 pandas 排序应用此规则,我会遇到许多问题,包括:

  1. pandasDataFrame.sort_values()函数像 sort() 函数一样接受用于排序的键,但键函数应该矢量化(根据 pandas 文档)。如果我尝试仅将排序键应用于“一”列,则会收到错误“TypeError:无法将系列转换为 <class 'int'>”
  2. 当您使用 pandasDataFrame.sort_values()方法时,它将排序键应用于您传入的所有列。这将不起作用,因为我想使用本机数字排序首先按列“二”进行排序。

我将如何按照上面提到的方式对 DataFrame 进行排序?

python sorting dataframe pandas

9
推荐指数
1
解决办法
6809
查看次数

标签 统计

dataframe ×1

pandas ×1

python ×1

sorting ×1