簡體   English   中英

Pandas 用字符串和整數按列對數據框進行排序

[英]Pandas sort dataframe by column with strings and integers

我有一個包含整數和字符串的列的數據框:

>>> df = pd.DataFrame({'a':[2,'c',1,10], 'b':[5,4,0,6]})
>>> df
    a  b
0   2  5
1   c  4
2   1  0
3  10  6

我想按列 a 對數據框進行排序,分別處理字符串和整數,首先使用字符串:

>>> df
    a  b
1   c  4
2   1  0
0   2  5
3  10  6

...但 Python 不允許將整數與字符串進行比較。

TypeError: unorderable types: int() > str()

如果我首先將所有整數轉換為字符串,我不會得到我想要的:

>>> df.a = df.a.astype(str)
>>> df.sort(columns='a')
    a  b
0   1  0
3  10  6
2   2  5
1   c  4

有沒有人知道一種單行方式告訴 Pandas 我希望它先對字符串進行排序,然后是整數,而不是先將數據幀分成幾部分?

一種選擇是按列a的數據類型對數據框進行分組,然后分別對每個組進行排序:

df.groupby(df.a.apply(type) != str).apply(lambda g: g.sort_values('a')).reset_index(drop = True)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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