首页 > 解决方案 > 熊猫数据框中的自定义数据排序(字母+整数)

问题描述

我有一个数据框,我需要对一列的内容进行排序(逗号分隔)(按字母顺序+数字):

输入 : -

      Invoice Number
0     IN-2
1     IN-1
2     IN-5
3     IN-20
4     IN-10

我想要像这样的输出

      Invoice Number
0     IN-1
1     IN-2
2     IN-5
3     IN-10
4     IN-20

我试过了

df.sort_values(by=['发票编号'])

但它排序:

      Invoice Number
0     IN-1
1     IN-10
2     IN-2
3     IN-20
4     IN-5

如果有人知道如何对我的数据(字母+整数)值进行排序,请告诉我。

标签: pythonpandasdataframesorting

解决方案


尝试使用占位符列:

df['_'] = df['Invoice Number'].str.split('-').str[1].astype(int)
print(df.sort_values('_').drop('_', axis=1).reset_index(drop=True))

或与key论点:

print(df.sort_values('Invoice Number', key=lambda x: x.str.split('-').str[1].astype(int))

两个代码输出:

  Invoice Number
0           IN-1
1           IN-2
2           IN-5
3          IN-10
4          IN-20

推荐阅读