pandas.DataFrame Series排序的使用(sort_values,sort_index)
要對(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ù)指定為列表,則可以按多列排序。
從列表的后面開始順序排序的圖像。最后,它按列表中的第一列排序。
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’,它將被安排在開頭。
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ū)ο?,但是如果inplace參數(shù)為True,則原始對(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)參見以下文章。
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。如果為True,則更改原始對(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()類似,如果設(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
到此這篇關(guān)于pandas.DataFrame Series排序的使用(sort_values,sort_index)的文章就介紹到這了,更多相關(guān)pandas DataFrame Series排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python數(shù)據(jù)分析Pandas?Dataframe排序操作
- Pandas數(shù)值排序 sort_values()的使用
- python?pandas?數(shù)據(jù)排序的幾種常用方法
- pandas中按行或列的值對(duì)數(shù)據(jù)排序的實(shí)現(xiàn)
- pandas?dataframe按照列名給列排序三種方法
- Python使用pandas實(shí)現(xiàn)對(duì)數(shù)據(jù)進(jìn)行特定排序
- Python利用pandas對(duì)數(shù)據(jù)進(jìn)行特定排序
- pandas中DataFrame排序及分組排序的實(shí)現(xiàn)示例
- pandas中數(shù)據(jù)的排序與排名的具體使用
- Pandas排序和分組排名(sort和rank)的實(shí)現(xiàn)
相關(guān)文章
Python numpy大矩陣運(yùn)算內(nèi)存不足如何解決
這篇文章主要介紹了Python numpy大矩陣運(yùn)算內(nèi)存不足如何解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11Python實(shí)現(xiàn)的Google IP 可用性檢測腳本
這篇文章主要介紹了Python實(shí)現(xiàn)的Google IP 可用性檢測腳本,本文腳本需要Python 3.4+環(huán)境,需要的朋友可以參考下2015-04-04python實(shí)現(xiàn)調(diào)用其他python腳本的方法
python實(shí)現(xiàn)調(diào)用其他python腳本的方法,是一個(gè)比較實(shí)用的技巧,需要的朋友可以參考下2014-10-10Python 循環(huán)函數(shù)詳細(xì)介紹
循環(huán)用于重復(fù)執(zhí)行一些程序塊。從上一講的選擇結(jié)構(gòu),我們已經(jīng)看到了如何用縮進(jìn)來表示程序塊的隸屬關(guān)系。循環(huán)也會(huì)用到類似的寫法。感興趣得小伙伴請(qǐng)參考下面文字得具體內(nèi)容2021-09-09Python網(wǎng)絡(luò)安全格式字符串漏洞任意地址覆蓋大數(shù)字詳解
這篇文章主要介紹了Python網(wǎng)絡(luò)安全格式字符串漏洞任意地址覆蓋大數(shù)字的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10