Pandas按字母顺序将值排序为第二个字符

问题描述 投票:0回答:2

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

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

无论如何都可以不使用自定义排序键来实现这一目标?

感谢您的帮助

python pandas sorting alphabetical
2个回答
0
投票

使用.str[1]从系列中获取第二个字符,然后使用argsort获得Positions of values within the sort order,可以进一步用于订购原始数据帧:

df.loc[df.Location.str[1].argsort()]

#   Location
#2    CD111
#3    CD111
#0    CJ111
#1    CJ111
#6    BL111
#7    BL111
#4    BQ111
#5    BQ111

0
投票

另一种选择是将sort_values与索引一起使用,以后可用于其他排序,等等:

完整代码

import pandas as pd
lst = ['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().index
df = df.reindex(idx).reset_index(drop=True)
print(df)
© www.soinside.com 2019 - 2024. All rights reserved.