排序时将字符串转换为整数
String Into Integer while sorting
想知道是否有办法仅在 sort_values() 过程中将字符串转换为整数,或者是否更容易在排序之前将变量转换为整数然后转换回排序后的字符串。
当前代码运行,但代码不正确,因为我相信D_Index实际上是一个字符串,所以它被排序为11,12,2,21,22,3 2,3,11,12,21,22。请参阅下面的 table 示例和代码。
Model
D_Index
First
11
Second
12
Third
2
Fourth
21
Fifth
22
Sixth
3
df_New = df_Old.sort_values(['Model','D_Index'])
您可以将排序键传递给 sort_values
:
out = df.sort_values(by='D_Index', key=lambda x: x.astype(int))
输出:
Model D_Index
2 Third 2
5 Sixth 3
0 First 11
1 Second 12
3 Fourth 21
4 Fifth 22
如果要包含Model
,可以使用系列名称:
df.sort_values(by=['Model','D_Index'], key=lambda x: x.astype(int) if x.name=='D_Index' else x)
输出(在您的示例中,排序很简单,因为没有 Model
具有不同的 D_Index
es):
Model D_Index
4 Fifth 22
0 First 11
3 Fourth 21
1 Second 12
5 Sixth 3
2 Third 2
您可以使用 lambda 函数:
df.sort_values(by='D_Index', key=lambda col: col.astype(float))
想知道是否有办法仅在 sort_values() 过程中将字符串转换为整数,或者是否更容易在排序之前将变量转换为整数然后转换回排序后的字符串。
当前代码运行,但代码不正确,因为我相信D_Index实际上是一个字符串,所以它被排序为11,12,2,21,22,3 2,3,11,12,21,22。请参阅下面的 table 示例和代码。
Model | D_Index |
---|---|
First | 11 |
Second | 12 |
Third | 2 |
Fourth | 21 |
Fifth | 22 |
Sixth | 3 |
df_New = df_Old.sort_values(['Model','D_Index'])
您可以将排序键传递给 sort_values
:
out = df.sort_values(by='D_Index', key=lambda x: x.astype(int))
输出:
Model D_Index
2 Third 2
5 Sixth 3
0 First 11
1 Second 12
3 Fourth 21
4 Fifth 22
如果要包含Model
,可以使用系列名称:
df.sort_values(by=['Model','D_Index'], key=lambda x: x.astype(int) if x.name=='D_Index' else x)
输出(在您的示例中,排序很简单,因为没有 Model
具有不同的 D_Index
es):
Model D_Index
4 Fifth 22
0 First 11
3 Fourth 21
1 Second 12
5 Sixth 3
2 Third 2
您可以使用 lambda 函数:
df.sort_values(by='D_Index', key=lambda col: col.astype(float))