網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
pandas.DataFrame?Series排序的使用(sort_values,sort_index)_python
作者:餃子大人 ? 更新時(shí)間: 2023-06-04 編程語(yǔ)言要對(duì)pandas.DataFrame和pandas.Series進(jìn)行排序,可以使用sort_values()和sort_index()方法。
請(qǐng)注意,舊版本中存在的sort()方法已廢棄。
按元素排序sort_values()
- 升序,降序(參數(shù)ascending)
- 多列排序
- 缺失值NaN的處理(參數(shù)na_position)
- 更改原始對(duì)象(參數(shù)inplace)
按行方向排序(參數(shù)axis)
- 按索引排序(行名/列名)sort_index()
- 按行名索引排序
- 升序,降序(參數(shù)ascending)
- 更改原始對(duì)象(參數(shù)inplace)
- 按列名列排序(參數(shù)axis)
以以下數(shù)據(jù)為例。
import pandas as pd
df = pd.read_csv('./data/17/sample_pandas_normal.csv')
print(df)
# ? ? ? name ?age state ?point
# 0 ? ?Alice ? 24 ? ?NY ? ? 64
# 1 ? ? ?Bob ? 42 ? ?CA ? ? 92
# 2 ?Charlie ? 18 ? ?CA ? ? 70
# 3 ? ? Dave ? 68 ? ?TX ? ? 70
# 4 ? ?Ellen ? 24 ? ?CA ? ? 88
# 5 ? ?Frank ? 30 ? ?NY ? ? 57
示例是pandas.DataFrame,但是pandas.Series也具有sort_values()和sort_index(),因此用法是相同的。
按元素排序sort_values()
使用sort_values()方法根據(jù)元素值進(jìn)行排序。
在第一個(gè)參數(shù)(by)中指定要排序的列的標(biāo)簽(列名)。
df_s = df.sort_values('state')
print(df_s)
# name age state point
# 1 Bob 42 CA 92
# 2 Charlie 18 CA 70
# 4 Ellen 24 CA 88
# 0 Alice 24 NY 64
# 5 Frank 30 NY 57
# 3 Dave 68 TX 70
升序,降序(參數(shù)ascending)
默認(rèn)為升序。如果要使用降序,請(qǐng)將升序參數(shù)設(shè)置為False。
df_s = df.sort_values('state', ascending=False)
print(df_s)
# name age state point
# 3 Dave 68 TX 70
# 0 Alice 24 NY 64
# 5 Frank 30 NY 57
# 1 Bob 42 CA 92
# 2 Charlie 18 CA 70
# 4 Ellen 24 CA 88
多列排序
如果將第一個(gè)參數(shù)指定為列表,則可以按多列排序。
從列表的后面開(kāi)始順序排序的圖像。最后,它按列表中的第一列排序。
df_s = df.sort_values(['state', 'age'])
print(df_s)
# ? ? ? name ?age state ?point
# 2 ?Charlie ? 18 ? ?CA ? ? 70
# 4 ? ?Ellen ? 24 ? ?CA ? ? 88
# 1 ? ? ?Bob ? 42 ? ?CA ? ? 92
# 0 ? ?Alice ? 24 ? ?NY ? ? 64
# 5 ? ?Frank ? 30 ? ?NY ? ? 57
# 3 ? ? Dave ? 68 ? ?TX ? ? 70
df_s = df.sort_values(['age', 'state'])
print(df_s)
# ? ? ? name ?age state ?point
# 2 ?Charlie ? 18 ? ?CA ? ? 70
# 4 ? ?Ellen ? 24 ? ?CA ? ? 88
# 0 ? ?Alice ? 24 ? ?NY ? ? 64
# 5 ? ?Frank ? 30 ? ?NY ? ? 57
# 1 ? ? ?Bob ? 42 ? ?CA ? ? 92
# 3 ? ? Dave ? 68 ? ?TX ? ? 70
如果將升序參數(shù)指定為列表,則可以為每列選擇升序或降序。
df_s = df.sort_values(['age', 'state'], ascending=[True, False])
print(df_s)
# name age state point
# 2 Charlie 18 CA 70
# 0 Alice 24 NY 64
# 4 Ellen 24 CA 88
# 5 Frank 30 NY 57
# 1 Bob 42 CA 92
# 3 Dave 68 TX 70
缺失值NaN的處理(參數(shù)na_position)
如果缺少值NaN,則默認(rèn)情況下將對(duì)其排序。
df_nan = df.copy()
df_nan.iloc[:2, 1] = pd.np.nan
print(df_nan)
# ? ? ? name ? age state ?point
# 0 ? ?Alice ? NaN ? ?NY ? ? 64
# 1 ? ? ?Bob ? NaN ? ?CA ? ? 92
# 2 ?Charlie ?18.0 ? ?CA ? ? 70
# 3 ? ? Dave ?68.0 ? ?TX ? ? 70
# 4 ? ?Ellen ?24.0 ? ?CA ? ? 88
# 5 ? ?Frank ?30.0 ? ?NY ? ? 57
df_nan_s = df_nan.sort_values('age')
print(df_nan_s)
# ? ? ? name ? age state ?point
# 2 ?Charlie ?18.0 ? ?CA ? ? 70
# 4 ? ?Ellen ?24.0 ? ?CA ? ? 88
# 5 ? ?Frank ?30.0 ? ?NY ? ? 57
# 3 ? ? Dave ?68.0 ? ?TX ? ? 70
# 0 ? ?Alice ? NaN ? ?NY ? ? 64
# 1 ? ? ?Bob ? NaN ? ?CA ? ? 92
如果參數(shù)na_position =‘first’,它將被安排在開(kāi)頭。
df_nan_s = df_nan.sort_values('age', na_position='first')
print(df_nan_s)
# name age state point
# 0 Alice NaN NY 64
# 1 Bob NaN CA 92
# 2 Charlie 18.0 CA 70
# 4 Ellen 24.0 CA 88
# 5 Frank 30.0 NY 57
# 3 Dave 68.0 TX 70
要?jiǎng)h除缺少的值或?qū)⑵涮鎿Q為另一個(gè)值,請(qǐng)參閱以下文章。
Pandas刪除,替換并提取其中的缺失值NaN(dropna,fillna,isnull)
更改原始對(duì)象(參數(shù)inplace)
默認(rèn)情況下,將返回一個(gè)新的排序?qū)ο螅侨绻鹖nplace參數(shù)為T(mén)rue,則原始對(duì)象本身將被更改。
df.sort_values('state', inplace=True)
print(df)
# name age state point
# 1 Bob 42 CA 92
# 2 Charlie 18 CA 70
# 4 Ellen 24 CA 88
# 0 Alice 24 NY 64
# 5 Frank 30 NY 57
# 3 Dave 68 TX 70
按行方向排序(參數(shù)axis)
與前面的示例一樣,默認(rèn)排序?yàn)榱校ù怪保?/p>
如果要按行方向排序,請(qǐng)將參數(shù)軸設(shè)置為1。其他參數(shù)與前面的示例相同。
由于如果數(shù)值和字符串混合使用會(huì)發(fā)生錯(cuò)誤,因此在此處刪除字符串列,僅顯示數(shù)值列。有關(guān)drop()方法,請(qǐng)參見(jiàn)以下文章。
Pandas.DataFrame刪除指定行和列(drop
df_d = df.drop(['name', 'state'], axis=1)
print(df_d)
# ? ?age ?point
# 1 ? 42 ? ? 92
# 2 ? 18 ? ? 70
# 4 ? 24 ? ? 88
# 0 ? 24 ? ? 64
# 5 ? 30 ? ? 57
# 3 ? 68 ? ? 70
df_d .sort_values(by=1, axis=1, ascending=False, inplace=True)
print(df_d)
# ? ?point ?age
# 1 ? ? 92 ? 42
# 2 ? ? 70 ? 18
# 4 ? ? 88 ? 24
# 0 ? ? 64 ? 24
# 5 ? ? 57 ? 30
# 3 ? ? 70 ? 68
按索引排序(行名/列名)sort_index()
使用sort_index()方法按索引(行名/列名)排序。
按行名索引排序
默認(rèn)情況下,sort_index()根據(jù)行名在列方向(垂直方向)上排序。
print(df)
# ? ? ? name ?age state ?point
# 1 ? ? ?Bob ? 42 ? ?CA ? ? 92
# 2 ?Charlie ? 18 ? ?CA ? ? 70
# 4 ? ?Ellen ? 24 ? ?CA ? ? 88
# 0 ? ?Alice ? 24 ? ?NY ? ? 64
# 5 ? ?Frank ? 30 ? ?NY ? ? 57
# 3 ? ? Dave ? 68 ? ?TX ? ? 70
df_s = df.sort_index()
print(df_s)
# ? ? ? name ?age state ?point
# 0 ? ?Alice ? 24 ? ?NY ? ? 64
# 1 ? ? ?Bob ? 42 ? ?CA ? ? 92
# 2 ?Charlie ? 18 ? ?CA ? ? 70
# 3 ? ? Dave ? 68 ? ?TX ? ? 70
# 4 ? ?Ellen ? 24 ? ?CA ? ? 88
# 5 ? ?Frank ? 30 ? ?NY ? ? 57
升序,降序(參數(shù)ascending)
與sort_values()一樣,默認(rèn)值為升序。如果要使用降序,請(qǐng)將升序參數(shù)設(shè)置為False。
df_s = df.sort_index(ascending=False)
print(df_s)
# name age state point
# 5 Frank 30 NY 57
# 4 Ellen 24 CA 88
# 3 Dave 68 TX 70
# 2 Charlie 18 CA 70
# 1 Bob 42 CA 92
# 0 Alice 24 NY 64
更改原始對(duì)象(參數(shù)inplace)
與sort_values()一樣,可以指定參數(shù)inplace。如果為T(mén)rue,則更改原始對(duì)象。
df.sort_index(inplace=True)
print(df)
# name age state point
# 0 Alice 24 NY 64
# 1 Bob 42 CA 92
# 2 Charlie 18 CA 70
# 3 Dave 68 TX 70
# 4 Ellen 24 CA 88
# 5 Frank 30 NY 57
按列名列排序(參數(shù)axis)
與sort_values()類(lèi)似,如果設(shè)置了參數(shù)axis = 1,則根據(jù)列名在行方向(水平方向)上進(jìn)行排序。可以像前面的示例一樣使用其他參數(shù)。
df_s = df.sort_index(axis=1)
print(df_s)
# ? ?age ? ? name ?point state
# 0 ? 24 ? ?Alice ? ? 64 ? ?NY
# 1 ? 42 ? ? ?Bob ? ? 92 ? ?CA
# 2 ? 18 ?Charlie ? ? 70 ? ?CA
# 3 ? 68 ? ? Dave ? ? 70 ? ?TX
# 4 ? 24 ? ?Ellen ? ? 88 ? ?CA
# 5 ? 30 ? ?Frank ? ? 57 ? ?NY
df.sort_index(axis=1, ascending=False, inplace=True)
print(df)
# ? state ?point ? ? name ?age
# 0 ? ?NY ? ? 64 ? ?Alice ? 24
# 1 ? ?CA ? ? 92 ? ? ?Bob ? 42
# 2 ? ?CA ? ? 70 ?Charlie ? 18
# 3 ? ?TX ? ? 70 ? ? Dave ? 68
# 4 ? ?CA ? ? 88 ? ?Ellen ? 24
# 5 ? ?NY ? ? 57 ? ?Frank ? 30
原文鏈接:https://blog.csdn.net/qq_18351157/article/details/106283065
- 上一篇:沒(méi)有了
- 下一篇:沒(méi)有了
相關(guān)推薦
- 2022-04-28 Python中print()函數(shù)的用法詳情_(kāi)python
- 2023-05-06 docker?search命令的具體使用_docker
- 2022-08-03 C#記一次http協(xié)議multipart/form-data的boundary問(wèn)題_C#教程
- 2022-09-07 python?正則表達(dá)式如何實(shí)現(xiàn)重疊匹配_python
- 2022-11-19 React實(shí)現(xiàn)多個(gè)場(chǎng)景下鼠標(biāo)跟隨提示框詳解_React
- 2022-03-14 命令刪除node_modules
- 2023-01-15 C#實(shí)現(xiàn)虛擬鍵盤(pán)的實(shí)例詳解_C#教程
- 2023-02-09 Python去除html標(biāo)簽的幾種方法總結(jié)_python
- 欄目分類(lèi)
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支