當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Pandas DataFrame sort_values方法用法及代碼示例


Pandas DataFrame.sort_values(~) 方法按列或行值對源 DataFrame 進行排序。

參數

1.by | stringlist<string>

要排序的列或行的名稱。

2. axis | stringint | optional

是否按行或列排序:

說明

0"index"

DataFrame 將按列值排序。

1"columns"

DataFrame 將按行值排序。

默認情況下,axis=0

3. ascending | booleanlist<booleans> | optional

是否按升序或降序排序。默認情況下,ascending=True

4. inplace | boolean | optional

  • 如果是True,那麽源DataFrame將被直接修改,並且不會創建新的DataFrame。

  • 如果False,則將創建一個新的DataFrame,並且源DataFrame將保持不變。

默認情況下,inplace=False

5. kind | string | optional

使用的排序算法:

種類

速度

最壞的情況下

memory

穩定的

quicksort

1(快)

O(n^2)

0

no

mergesort

2

O(nlogn)

~n/2

yes

heapsort

3(慢)

O(nlogn)

0

no

默認情況下,kind="quicksort"

注意

排序算法是"stable"保留重複值的相對順序。例如,假設您正在對數組進行排序[(2,3), (2,1), (4,5)]由每個元組的第一個元素。我們這裏有一個重複值 2,穩定的排序算法確保(2,3)總會先來的(2,1)因為這就是它們最初的排序方式。不穩定的搜索不能保證保留此類順序。

6. na_position | string | optional

在哪裏放置 NaN 值:

說明

"first"

NaN 放在開頭

"last"

NaN 放在末尾

默認情況下,na_position="last"

7. ignore_index | boolean | optional

  • 如果 True ,則排序後的 DataFrame 的索引將為 0,1,...,n-1 ,其中 n 是 DataFrame 的行數。

  • 如果 False ,則索引名稱將保持原樣。

默認情況下,ignore_index=False

返回值

按行或列值排序的 DataFrame

例子

考慮以下 DataFrame :

df = pd.DataFrame({"A":[5,3,1,3],"B":["c","d","a","a"]})
df



   A  B
0  5  c
1  3  d
2  1  a
3  3  a

按列值排序

按列排序 A

df.sort_values("A")



   A  B
2  1  a
1  3  d
3  3  a
0  5  c

按多列排序

要按多列排序,請傳入列標簽列表:

df.sort_values(["A","B"])



   A  B
2  1  a
3  3  a
1  3  d
0  5  c

在這裏,行首先按列 A 中的值排序。當存在重複值時,我們按 B 列中的值進行排序。這就是在這種情況下值 "a" 保證位於 "d" 之前的原因。

按行值排序

考慮以下 DataFrame :

df = pd.DataFrame({"A":[5,9,4],"B":[1,3,2]}, index=["a","b","c"])
df



   A  B
a  5  1 
b  9  3
c  4  2

要按行 "b" 中的值排序:

df.sort_values("b", axis=1)



   B  A
a  1  5
b  3  9
c  2  4

按降序排序

考慮以下 DataFrame :

df = pd.DataFrame({"A":[5,9,5],"B":[4,3,1]}, index=["a","b","c"])
df 



   A  B
a  5  4
b  9  3
c  5  1

默認情況下,值按升序排序。要按降序排序,請設置 ascending=False

df.sort_values("A", ascending=False)



   A  B
b  9  3
a  5  4
c  5  1
傳遞布爾值數組

如果要按多列排序,則可以傳遞布爾值列表來指定每列應如何排序。

df.sort_values(["A","B"], ascending=[False, True])



   A  B
b  9  3
c  5  1
a  5  4

在這裏,我們按 A 列值降序排序,同時按 B 列升序排序。

指定na_position

考慮以下 DataFrame :

df = pd.DataFrame({"A":[pd.np.NaN,5,4]}, index=["a","b","c"])
df



   A
a  NaN
b  5.0
c  4.0

默認情況下, na_position="last" ,這意味著 NaN 放置在末尾:

df.sort_values(by="A")   # na_position="last"



   A
c  4.0
b  5.0
a  NaN

要將 NaN 放在開頭:

df.sort_values(by="A", na_position="first")



   A
a  NaN
c  4.0
b  5.0

指定ignore_index

考慮以下 DataFrame :

df = pd.DataFrame({"A":[5,9,2]}, index=["a","b","c"])
df



   A
a  5
b  9
c  2

默認情況下,保留索引名稱:

df.sort_values(by="A")



   A
c  2
a  5
b  9

通過設置 ignore_index=True ,我們可以重置索引:

df.sort_values(by="A", ignore_index=True)



   A
0  2
1  5
2  9

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | sort_values method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。