熊猫按字母顺序第二个字符对值进行排序

我目前有一个数据框列,如下所示:


Location

CJ111

CJ111

CD111

CD111

BQ111

BQ111

BL111

BL111

我在用着


df = df.sort_values(by=['Location'], ascending=False)

我希望 df 也按第二个字符排序,例如。


Location

CD111

CD111

CJ111

CJ111

BL111

BL111

BQ111

BQ111

有没有办法在不使用自定义排序键的情况下实现这一点?


谢谢您的帮助


明月笑刀无情
浏览 105回答 2
2回答

莫回无

用于.str[1]从系列中获取第二个字符,然后用于argsort获取排序顺序中值的位置,可进一步用于对原始数据框进行排序:df.loc[df.Location.str[1].argsort()]#   Location#2    CD111#3    CD111#0    CJ111#1    CJ111#6    BL111#7    BL111#4    BQ111#5    BQ111

函数式编程

另一种选择是将 sort_values 与索引一起使用,您以后可以将其用于其他排序等:完整代码import pandas as pdlst = ['CJ111','CJ111','CD111','CD111','BQ111','BQ111','BL111','BL111']df = pd.DataFrame(lst, columns =['Location']) df = df.reset_index(drop=True)idx = df['Location'].str[1:2].sort_values().indexdf = df.reindex(idx).reset_index(drop=True)print(df)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python