簡體   English   中英

熊貓用數字字符串對列進行排序

[英]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 函數應該被向量化 它應該期待一個系列並返回一個與輸入具有相同形狀的系列。 它將被獨立地應用於每一列。

在您的情況下,您可以使用.strastype進行切片和類型轉換:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM