python dataframe怎么排序

python dataframe怎么排序,第1张

排序分为降序和升序,dataframe排序包含单列排序和多列排序

# /usr/bin/python

# -- coding: utf-8 --

# 导入依赖包pandas

import pandas as pd

# 读入数据

dat = pdread_csv('datatxt', 'r')

# 单列排序

# 使用sort,默认是升序,所以下面的两个方法等价

datsort(["column1"])

datsort(["column1"], ascending=True)

# 单列降序

datsort(["column1"], ascending=False)

# 多列升序

datsort(["column1", "column2"])

datsort(["column1", "column2"], ascending=True)

# 多列降序

datsort(["column1", "column2"], ascending=False)

Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列。

sorted(iterable,key=None,reverse=False),返回新的列表,对所有可迭代的对象均有效

sort(key=None,reverse=False) 就地改变列表  reverse:True反序;False 正序

Example1:

>>>sorted([1,5,3,2,9])

[1,2,3,5,9]

>>>a=[5,3,2,1,4]

>>>asort()

>>>a

[1,2,3,4,5]   #若用listsort()则list本身将被修改

>>>sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})

[1,2,3,4,5]   #sorted()对所有的可迭代序列都有效

在python24开始,listsort()和sorted()增加key参数来指定一个函数,此函数在每个元素比较前被调用。

Example2:

>>>sorted("This is a test string from Andrew"split(), key=strlower)  #加了key,忽略大小写

['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']                 #key=len按照长度进行排序

>>>sorted("This is a test string from Andrew"split())    #未加key,默认大写在前,小写在后

['Andrew', 'This', 'a', 'from', 'is', 'string', 'test']

更多的情况是用复杂对象的某些值来对复杂对象进行排序。

代码

# -- encoding: gbk --

def print_list(_list):

for l in _list:

print l

students = [

[80, 90, 100],

[70, 100, 90],

[60, 60, 60],

[100, 100, 100],

[90, 90, 90]

]

print_list(students)

print '\n按第一列排序:'

sorted_by_first = sorted(students, key = lambda x : x[0])

print_list (sorted_by_first)

print '\n先按第二列排序,然后按第一列排序:'

sorted_by_second_then_first = sorted(students, key = lambda x : (x[1], x[0]))

print_list (sorted_by_second_then_first)

print '\n按总和排序,并按降序排序:'

sorted_by_sum = sorted(students, key = lambda x : sum(x), reverse = True)

print_list (sorted_by_sum)

运行:

很多时候,我们需要对List进行排序,Python提供了两个方法,对给定的List

L进行排序:

方法1用List的成员函数sort进行排序

方法2用built-in函数sorted进行排序(从24开始)

这两种方法使用起来差不多,以第一种为例进行讲解:

从Python24开始,sort方法有了三个可选的参数,Python

Library

Reference里是这样描述的

复制代码代码如下:

cmp:cmp

specifies

a

custom

comparison

function

of

two

arguments

(iterable

elements)

which

should

return

a

negative,

zero

or

positive

number

depending

on

whether

the

first

argument

is

considered

smaller

than,

equal

to,

or

larger

than

the

second

argument:

"cmp=lambda

x,y:

cmp(xlower(),

ylower())"

key:key

specifies

a

function

of

one

argument

that

is

used

to

extract

a

comparison

key

from

each

list

element:

"key=strlower"

reverse:reverse

is

a

boolean

value

If

set

to

True,

then

the

list

elements

are

sorted

as

if

each

comparison

were

reversedIn

general,

the

key

and

reverse

conversion

processes

are

much

faster

than

specifying

an

equivalent

cmp

function

This

is

because

cmp

is

called

multiple

times

for

each

list

element

while

key

and

reverse

touch

each

element

only

once

以下是sort的具体实例

实例1:

复制代码代码如下:

>>>L

=

[2,3,1,4]

>>>Lsort()

>>>L

>>>[1,2,3,4]

实例2:

复制代码代码如下:

>>>L

=

[2,3,1,4]

>>>Lsort(reverse=True)

>>>L

>>>[4,3,2,1]

实例3:

复制代码代码如下:

>>>L

=

[('b',2),('a',1),('c',3),('d',4)]

>>>Lsort(cmp=lambda

x,y:cmp(x[1],y[1]))

>>>L

>>>[('a',

1),

('b',

2),

('c',

3),

('d',

4)]

实例4:

复制代码代码如下:

>>>L

=

[('b',2),('a',1),('c',3),('d',4)]

>>>Lsort(key=lambda

x:x[1])

>>>L

>>>[('a',

1),

('b',

2),

('c',

3),

('d',

4)]

实例5:

复制代码代码如下:

>>>L

=

[('b',2),('a',1),('c',3),('d',4)]

>>>import

operator

>>>Lsort(key=operatoritemgetter(1))

>>>L

>>>[('a',

1),

('b',

2),

('c',

3),

('d',

4)]

实例6:(DSU方法:Decorate-Sort-Undercorate)

复制代码代码如下:

>>>L

=

[('b',2),('a',1),('c',3),('d',4)]

>>>A

=

[(x[1],i,x)

for

i,x

in

enumerate(L)]

#i

can

confirm

the

stable

sort

>>>Asort()

>>>L

=

[s[2]

for

s

in

A]

>>>L

>>>[('a',

1),

('b',

2),

('c',

3),

('d',

4)]

以上给出了6中对List排序的方法,其中实例3456能起到对以List

item中的某一项

为比较关键字进行排序

效率比较:

复制代码代码如下:

cmp

<

DSU

<

key

通过实验比较,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相当

多关键字比较排序:

实例7:

复制代码代码如下:

>>>L

=

[('d',2),('a',4),('b',3),('c',2)]

>>>

Lsort(key=lambda

x:x[1])

>>>

L

>>>[('d',

2),

('c',

2),

('b',

3),

('a',

4)]

我们看到,此时排序过的L是仅仅按照第二个关键字来排的,如果我们想用第二个关键字

排过序后再用第一个关键字进行排序呢有两种方法

实例8:

复制代码代码如下:

>>>

L

=

[('d',2),('a',4),('b',3),('c',2)]

>>>

Lsort(key=lambda

x:(x[1],x[0]))

>>>

L

>>>[('c',

2),

('d',

2),

('b',

3),

('a',

4)]

实例9:

复制代码代码如下:

>>>

L

=

[('d',2),('a',4),('b',3),('c',2)]

>>>

Lsort(key=operatoritemgetter(1,0))

>>>

L

>>>[('c',

2),

('d',

2),

('b',

3),

('a',

4)]

为什么实例8能够工作呢?原因在于tuple是的比较从左到右之一比较的,比较完第一个,如果

相等,比较第二个

以上就是关于python dataframe怎么排序全部的内容,包括:python dataframe怎么排序、python 排序,sort和sorted的区别是什么、利用python排序问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9708499.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存