我目前有一個數據框列,如下所示:LocationCJ111CJ111CD111CD111BQ111BQ111BL111BL111我在用著df = df.sort_values(by=['Location'], ascending=False)我希望 df 也按第二個字符排序,例如。LocationCD111CD111CJ111CJ111BL111BL111BQ111BQ111有沒有辦法在不使用自定義排序鍵的情況下實現這一點?謝謝您的幫助
2 回答

莫回無
TA貢獻1865條經驗 獲得超7個贊
用于.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

函數式編程
TA貢獻1807條經驗 獲得超9個贊
另一種選擇是將 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)
添加回答
舉報
0/150
提交
取消