![](/img/trans.png)
[英]Is there a way to sort a pandas dataframe by column of numerical strings?
[英]Pandas sort column with numerical string
我在下面有一個數據框:
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
缺少一個
sort_values
中的key
將系列作為參數而不是單個元素。 從文檔:
在排序之前將鍵函數應用於值。 這類似於內置 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
您的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]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.