Pandas数据排序

Pandas数据排序

.sort_index() 在指定轴上根据索引进行排序,索引排序后内容会跟随排序

import pandas as pd
import numpy as np

b = pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
b
01234
c01234
a56789
d1011121314
b1516171819
b.sort_index()
01234
a56789
b1516171819
c01234
d1011121314
b.sort_index(ascending=False)
01234
d1011121314
c01234
b1516171819
a56789
b.sort_index(axis=0, ascending=False) # 按行标排序,ascending:False为降序
01234
d1011121314
c01234
b1516171819
a56789
b.sort_index(axis=1, ascending=False) # 按列标排序
43210
c43210
a98765
d1413121110
b1918171615

.sort_values() 在指定轴上根据数值进行排序,默认升序

  • Series.sort_values(axis=0,ascending=True)
  • DataFrame.sort_values(by,axis=0,ascending=True)
    • by:axis轴上的某个索引或索引列表
dates = pd.date_range('20130101', periods=10)
dates
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
               '2013-01-05', '2013-01-06', '2013-01-07', '2013-01-08',
               '2013-01-09', '2013-01-10'],
              dtype='datetime64[ns]', freq='D')
df = pd.DataFrame(np.random.randn(10,4),index=dates,columns=['A','B','C','D'])
df.head()
ABCD
2013-01-01-0.3002660.6832320.777509-0.274338
2013-01-022.298084-0.8555241.462064-0.725142
2013-01-030.5127110.8243800.384902-1.437241
2013-01-040.388478-1.265414-1.104333-0.447689
2013-01-050.273518-0.314857-2.545510-1.301629
c = df.sort_values('B')
c.head()
ABCD
2013-01-01-0.976353-2.1760750.2555850.645465
2013-01-03-1.549727-1.8767900.9667240.486101
2013-01-06-0.000467-1.430820-1.803610-0.587985
2013-01-10-0.293663-0.6919510.262666-1.298977
2013-01-04-0.032301-0.6185821.204373-0.302137
c = df.sort_values('B',ascending = False)
c.head()
ABCD
2013-01-030.5127110.8243800.384902-1.437241
2013-01-01-0.3002660.6832320.777509-0.274338
2013-01-080.0109390.5917770.1431820.461798
2013-01-100.8111690.100516-1.3853730.168329
2013-01-050.273518-0.314857-2.545510-1.301629
# 指定1轴排序,这里指定1轴a行为基准排序
c = df.sort_values('2013-01-01',axis=1,ascending=False) 
c.head()
CBDA
2013-01-010.7775090.683232-0.274338-0.300266
2013-01-021.462064-0.855524-0.7251422.298084
2013-01-030.3849020.824380-1.4372410.512711
2013-01-04-1.104333-1.265414-0.4476890.388478
2013-01-05-2.545510-0.314857-1.3016290.273518

NaN空值统一放在排序末尾

a = pd.DataFrame(np.arange(12).reshape(3,4),index=['a','b','c'])
a
0123
a0123
b4567
c891011
b = pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
b
01234
c01234
a56789
d1011121314
b1516171819
c = a + b
c
01234
a5.07.09.011.0NaN
b19.021.023.025.0NaN
c8.010.012.014.0NaN
dNaNNaNNaNNaNNaN
c.sort_values(2,ascending = False)
01234
b19.021.023.025.0NaN
c8.010.012.014.0NaN
a5.07.09.011.0NaN
dNaNNaNNaNNaNNaN
c.sort_values(2,ascending = True)
01234
a5.07.09.011.0NaN
c8.010.012.014.0NaN
b19.021.023.025.0NaN
dNaNNaNNaNNaNNaN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值