我在下面有一個資料框:
col1
Numb10
Numb11
Numb12
Numb7
Numb8
如何按編號順序排序:
col1
Numb7
Numb8
Numb10
Numb11
Numb12
我試過但有錯誤TypeError: cannot convert the series to <class 'int'>。
df.sort_values(by = "col1", key = (lambda x: int(x[4:])))
更新缺少一個 col1
uj5u.com熱心網友回復:
keyinsort_values將系列作為引數而不是單個元素。從檔案:
在排序之前將鍵函式應用于值。這類似于內置 sorted() 函式中的 key 引數,顯著的區別是該 key 函式應該被向量化。它應該期待一個系列并回傳一個與輸入具有相同形狀的系列。它將被獨立地應用于每一列。
在您的情況下,您可以使用.str和astype進行切片和型別轉換:
df.sort_values(by='col1', key=lambda s: s.str[4:].astype(int))
col1
3 Numb7
4 Numb8
0 Numb10
1 Numb11
2 Numb12
uj5u.com熱心網友回復:
您x[4:]可能并不總是整數。你可以驗證
# convert to numerical values, float, not integers
extracted_nums = pd.to_numeric(df['col1'].str[4:], errors='coerce')
# check for invalid values
# if not `0` means you have something that are not numerical
print(extracted_nums.isna().any())
# sort by values
df.loc[extracted_nums.sort_values().index]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/312304.html
