当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。