您好,登錄后才能下訂單哦!
這篇文章主要介紹“pandas.DataFrame Series排序如何使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“pandas.DataFrame Series排序如何使用”文章能幫助大家解決問題。
以以下數據為例。
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()方法根據元素值進行排序。
在第一個參數(by)中指定要排序的列的標簽(列名)。
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
默認為升序。如果要使用降序,請將升序參數設置為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
如果將第一個參數指定為列表,則可以按多列排序。
從列表的后面開始順序排序的圖像。最后,它按列表中的第一列排序。
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
如果將升序參數指定為列表,則可以為每列選擇升序或降序。
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,則默認情況下將對其排序。
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
如果參數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
要刪除缺少的值或將其替換為另一個值,請參閱以下文章。
Pandas刪除,替換并提取其中的缺失值NaN(dropna,fillna,isnull)
默認情況下,將返回一個新的排序對象,但是如果inplace參數為True,則原始對象本身將被更改。
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
與前面的示例一樣,默認排序為列(垂直)。
如果要按行方向排序,請將參數軸設置為1。其他參數與前面的示例相同。
由于如果數值和字符串混合使用會發生錯誤,因此在此處刪除字符串列,僅顯示數值列。有關drop()方法,請參見以下文章。
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()根據行名在列方向(垂直方向)上排序。
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
與sort_values()一樣,默認值為升序。如果要使用降序,請將升序參數設置為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
與sort_values()一樣,可以指定參數inplace。如果為True,則更改原始對象。
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
與sort_values()類似,如果設置了參數axis = 1,則根據列名在行方向(水平方向)上進行排序。可以像前面的示例一樣使用其他參數。
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
關于“pandas.DataFrame Series排序如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。