亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Pandas 根據外部序列對數據框進行排序

Pandas 根據外部序列對數據框進行排序

阿波羅的戰車 2023-09-26 16:43:54
假設我有以下數據框:df = pd.DataFrame({'id': [1,2,3,4,5,6,7,8,9,10], 'name': ['a', 'nkjnkj', 'oijhoiuh', 'on', 'lnjjn', 'kmlkm', 'molijoijoij', 'kljkljhlh', 'ghkghgj', 'ihkjhkj']})我想按名稱的長度對其進行排序,我可以這樣做:df['len'] = df['name'].str.len()df.sort_values('len') id         name  len  1            a    1  4           on    2  5        lnjjn    5  6        kmlkm    5  2       nkjnkj    6  9      ghkghgj    7 10      ihkjhkj    7  3     oijhoiuh    8  8    kljkljhlh    9  7  molijoijoij   11但可以做單行嗎?就像是:df.sort_by(df['name'].str.len()) #doesn't exist換句話說,我可以根據不在數據框中的系列對數據框進行排序嗎?
查看完整描述

3 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

嘗試這個:

df.loc[df['name'].str.len().argsort()]


查看完整回答
反對 回復 2023-09-26
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

只需將一個返回要排序的值的函數傳遞到key參數中即可


df.sort_values(by="name", key=lambda col: col.str.len())


   id         name

0   1            a

3   4           on

4   5        lnjjn

5   6        kmlkm

1   2       nkjnkj

8   9      ghkghgj

9  10      ihkjhkj

2   3     oijhoiuh

7   8    kljkljhlh

6   7  molijoijoij


查看完整回答
反對 回復 2023-09-26
?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

修復你的代碼


df.assign(len = df['name'].str.len()).sort_values('len').drop('len',1)

   id         name

0   1            a

3   4           on

4   5        lnjjn

5   6        kmlkm

1   2       nkjnkj

8   9      ghkghgj

9  10      ihkjhkj

2   3     oijhoiuh

7   8    kljkljhlh

6   7  molijoijoij


查看完整回答
反對 回復 2023-09-26
  • 3 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號