Pet*_*hen 1 python sorting pandas
我有一个下面的数据框:
col1
Numb10
Numb11
Numb12
Numb7
Numb8
Run Code Online (Sandbox Code Playgroud)
如何按数字顺序排序:
col1
Numb7
Numb8
Numb10
Numb11
Numb12
Run Code Online (Sandbox Code Playgroud)
我尝试过但出现错误TypeError: cannot convert the series to <class 'int'>。
df.sort_values(by = "col1", key = (lambda x: int(x[4:])))
Run Code Online (Sandbox Code Playgroud)
更新一下,缺了一个col1
keyinsort_values将系列作为参数而不是单个元素。来自文档:
在排序之前将键函数应用于值。这类似于内置的sorted()函数中的key参数,显着的区别是这个key函数应该被向量化。它应该期望一个 Series 并返回一个与输入形状相同的 Series。它将独立地应用于每列。
在您的情况下,您可以使用.strandastype进行切片和类型转换:
df.sort_values(by='col1', key=lambda s: s.str[4:].astype(int))
col1
3 Numb7
4 Numb8
0 Numb10
1 Numb11
2 Numb12
Run Code Online (Sandbox Code Playgroud)