Pandas对数据排序

Series的排序:

  • Series.sort_values(ascending=True,inplace=False)
  • 参数说明:
  • ascending:默认为True升序排序,为False降序排序
  • inplace:是否修改原始Series

DataFrame的排序:

  • DataFrame.sort_values(by, ascending=True,inplace=False)
  • 参数说明:
  • by:字符串或者List<字符串>,单列排序或者多列排序
  • ascending: bool或者list, 升序还是降序,如果是list对应by的多列
  • inplace: 是否修改原始的DataFrame

0.  读取数据

import pandas as pd
file_path = r'C:\TELCEL_MEXICO_BOT\A\Weather.csv'
df = pd.read_csv(file_path,encoding='utf-8')

# 查看df的前3行数据
print(df.head(3)) 
        ymd bWendu yWendu tianqi fengxiang fengji  aqi aqiInfo  aqiLevel
0  1/1/2025  -25°C   -6°C   晴~多云       西北风   1-2级   59       优         2
1  1/2/2025    2°C   -9°C      阴       东南风   3-4级   48       优         1
2  1/3/2025  -11°C   -2°C   晴~多云        西风   4-8级   28       良         1

# 将df中bWendu和yWendu的列数据先转换成字符串,然后把字符串中的°C替换成空,最后变成int32
df['bWendu'] = df['bWendu'].str.replace('°C', '').astype('int32')
df['yWendu'] = df['yWendu'].str.replace('°C', '').astype('int32')
          ymd  bWendu  yWendu tianqi fengxiang fengji  aqi aqiInfo  aqiLevel
0    1/1/2025     -25      -6   晴~多云       西北风   1-2级   59       优         2
1    1/2/2025       2      -9      阴       东南风   3-4级   48       优         1
2    1/3/2025     -11      -2   晴~多云        西风   4-8级   28       良         1
3    1/4/2025       0      -4   晴~多云        东风   2-5级   30       良         1
4    1/5/2025       3      -1     小雨        东风   3-5级   25       良         1
5    1/6/2025      10       3      阴        南风   2-5级   39       良         1
6    1/7/2025       7     -10      阴        南风   3-5级   59       差         1
7    1/8/2025     -13      -6     小雨        西风   3-4级   39       差         1
8    1/9/2025       8      -9   晴~多云        东风   4-8级   29       差         1
9   1/10/2025       3      -2     阵雨        北风   2-5级   25       优         3
10  1/11/2025       5      -4     阵雨        北风   3-5级   36       优         4
11  1/12/2025       7      -1      冰        西风   2-5级   39       差         2
12  1/13/2025       2      -4      冰        东风   2-5级   59       差         5
13  1/14/2025     -14      -1      霜        南风   3-5级   48       优         2
14  1/15/2025       7      -9      霜        南风   2-5级   28       良         3
15  1/16/2025       5     -10      冰        西风   3-5级   30       良         1
16  1/17/2025     -19      -6      雾        东风   3-4级   25       差         6
17  1/18/2025       3      -9      雾        西风   2-5级   39       优         4
18  1/19/2025       1      -2      雾        东风   3-5级   59       优         3

1. Series的排序

print(df['aqi'].sort_values())  # 默认升序排列
9     25
4     25
16    25
2     28
14    28
8     29
3     30
15    30
10    36
5     39
7     39
17    39
11    39
1     48
13    48
0     59
6     59
12    59
18    59
Name: aqi, dtype: int64
print(df['aqi'].sort_values(ascending=False)) # ascending=False为降序排列
0     59
6     59
12    59
18    59
1     48
13    48
5     39
7     39
11    39
17    39
10    36
3     30
15    30
8     29
2     28
14    28
4     25
16    25
9     25
Name: aqi, dtype: int64
print(df['tianqi'].sort_values()) #对天气也进行了排序
15       冰
12       冰
11       冰
4       小雨
7       小雨
0     晴~多云
2     晴~多云
3     晴~多云
8     晴~多云
1        阴
5        阴
6        阴
9       阵雨
10      阵雨
17       雾
16       雾
18       雾
13       霜
14       霜
Name: tianqi, dtype: object

2. DataFrame的排序

2.1 单列排序

print(df.sort_values(by='aqi')) # aqi默认为升序排序
          ymd  bWendu  yWendu tianqi fengxiang fengji  aqi aqiInfo  aqiLevel
9   1/10/2025       3      -2     阵雨        北风   2-5级   25       优         3
4    1/5/2025       3      -1     小雨        东风   3-5级   25       良         1
16  1/17/2025     -19      -6      雾        东风   3-4级   25       差         6
2    1/3/2025     -11      -2   晴~多云        西风   4-8级   28       良         1
14  1/15/2025       7      -9      霜        南风   2-5级   28       良         3
8    1/9/2025       8      -9   晴~多云        东风   4-8级   29       差         1
3    1/4/2025       0      -4   晴~多云        东风   2-5级   30       良         1
15  1/16/2025       5     -10      冰        西风   3-5级   30       良         1
10  1/11/2025       5      -4     阵雨        北风   3-5级   36       优         4
5    1/6/2025      10       3      阴        南风   2-5级   39       良         1
7    1/8/2025     -13      -6     小雨        西风   3-4级   39       差         1
17  1/18/2025       3      -9      雾        西风   2-5级   39       优         4
11  1/12/2025       7      -1      冰        西风   2-5级   39       差         2
1    1/2/2025       2      -9      阴       东南风   3-4级   48       优         1
13  1/14/2025     -14      -1      霜        南风   3-5级   48       优         2
0    1/1/2025     -25      -6   晴~多云       西北风   1-2级   59       优         2
6    1/7/2025       7     -10      阴        南风   3-5级   59       差         1
12  1/13/2025       2      -4      冰        东风   2-5级   59       差         5
18  1/19/2025       1      -2      雾        东风   3-5级   59       优         3
print(df.sort_values(by='aqi',ascending=False)) # ascending=False后,aqi按降序排序
          ymd  bWendu  yWendu tianqi fengxiang fengji  aqi aqiInfo  aqiLevel
0    1/1/2025     -25      -6   晴~多云       西北风   1-2级   59       优         2
6    1/7/2025       7     -10      阴        南风   3-5级   59       差         1
12  1/13/2025       2      -4      冰        东风   2-5级   59       差         5
18  1/19/2025       1      -2      雾        东风   3-5级   59       优         3
1    1/2/2025       2      -9      阴       东南风   3-4级   48       优         1
13  1/14/2025     -14      -1      霜        南风   3-5级   48       优         2
5    1/6/2025      10       3      阴        南风   2-5级   39       良         1
7    1/8/2025     -13      -6     小雨        西风   3-4级   39       差         1
11  1/12/2025       7      -1      冰        西风   2-5级   39       差         2
17  1/18/2025       3      -9      雾        西风   2-5级   39       优         4
10  1/11/2025       5      -4     阵雨        北风   3-5级   36       优         4
3    1/4/2025       0      -4   晴~多云        东风   2-5级   30       良         1
15  1/16/2025       5     -10      冰        西风   3-5级   30       良         1
8    1/9/2025       8      -9   晴~多云        东风   4-8级   29       差         1
2    1/3/2025     -11      -2   晴~多云        西风   4-8级   28       良         1
14  1/15/2025       7      -9      霜        南风   2-5级   28       良         3
4    1/5/2025       3      -1     小雨        东风   3-5级   25       良         1
16  1/17/2025     -19      -6      雾        东风   3-4级   25       差         6
9   1/10/2025       3      -2     阵雨        北风   2-5级   25       优         3

2.2 多列排序

# 先按aqiLevel升序,然后按bWendu升序
print(df.sort_values(by=['aqiLevel','bWendu'])) 

          ymd  bWendu  yWendu tianqi fengxiang fengji  aqi aqiInfo  aqiLevel
7    1/8/2025     -13      -6     小雨        西风   3-4级   39       差         1
2    1/3/2025     -11      -2   晴~多云        西风   4-8级   28       良         1
3    1/4/2025       0      -4   晴~多云        东风   2-5级   30       良         1
1    1/2/2025       2      -9      阴       东南风   3-4级   48       优         1
4    1/5/2025       3      -1     小雨        东风   3-5级   25       良         1
15  1/16/2025       5     -10      冰        西风   3-5级   30       良         1
6    1/7/2025       7     -10      阴        南风   3-5级   59       差         1
8    1/9/2025       8      -9   晴~多云        东风   4-8级   29       差         1
5    1/6/2025      10       3      阴        南风   2-5级   39       良         1
0    1/1/2025     -25      -6   晴~多云       西北风   1-2级   59       优         2
13  1/14/2025     -14      -1      霜        南风   3-5级   48       优         2
11  1/12/2025       7      -1      冰        西风   2-5级   39       差         2
18  1/19/2025       1      -2      雾        东风   3-5级   59       优         3
9   1/10/2025       3      -2     阵雨        北风   2-5级   25       优         3
14  1/15/2025       7      -9      霜        南风   2-5级   28       良         3
17  1/18/2025       3      -9      雾        西风   2-5级   39       优         4
10  1/11/2025       5      -4     阵雨        北风   3-5级   36       优         4
12  1/13/2025       2      -4      冰        东风   2-5级   59       差         5
16  1/17/2025     -19      -6      雾        东风   3-4级   25       差         6
# aqiLevel和bWendu都降序排序
print(df.sort_values(by=['aqiLevel','bWendu'], ascending=False)) 
          ymd  bWendu  yWendu tianqi fengxiang fengji  aqi aqiInfo  aqiLevel
16  1/17/2025     -19      -6      雾        东风   3-4级   25       差         6
12  1/13/2025       2      -4      冰        东风   2-5级   59       差         5
10  1/11/2025       5      -4     阵雨        北风   3-5级   36       优         4
17  1/18/2025       3      -9      雾        西风   2-5级   39       优         4
14  1/15/2025       7      -9      霜        南风   2-5级   28       良         3
9   1/10/2025       3      -2     阵雨        北风   2-5级   25       优         3
18  1/19/2025       1      -2      雾        东风   3-5级   59       优         3
11  1/12/2025       7      -1      冰        西风   2-5级   39       差         2
13  1/14/2025     -14      -1      霜        南风   3-5级   48       优         2
0    1/1/2025     -25      -6   晴~多云       西北风   1-2级   59       优         2
5    1/6/2025      10       3      阴        南风   2-5级   39       良         1
8    1/9/2025       8      -9   晴~多云        东风   4-8级   29       差         1
6    1/7/2025       7     -10      阴        南风   3-5级   59       差         1
15  1/16/2025       5     -10      冰        西风   3-5级   30       良         1
4    1/5/2025       3      -1     小雨        东风   3-5级   25       良         1
1    1/2/2025       2      -9      阴       东南风   3-4级   48       优         1
3    1/4/2025       0      -4   晴~多云        东风   2-5级   30       良         1
2    1/3/2025     -11      -2   晴~多云        西风   4-8级   28       良         1
7    1/8/2025     -13      -6     小雨        西风   3-4级   39       差         1
# aqiLevel升序排序,然后bWendu降序排序,即分别指定升序和降序
print(df.sort_values(by=['aqiLevel','bWendu'], ascending=[True,False]))
          ymd  bWendu  yWendu tianqi fengxiang fengji  aqi aqiInfo  aqiLevel
5    1/6/2025      10       3      阴        南风   2-5级   39       良         1
8    1/9/2025       8      -9   晴~多云        东风   4-8级   29       差         1
6    1/7/2025       7     -10      阴        南风   3-5级   59       差         1
15  1/16/2025       5     -10      冰        西风   3-5级   30       良         1
4    1/5/2025       3      -1     小雨        东风   3-5级   25       良         1
1    1/2/2025       2      -9      阴       东南风   3-4级   48       优         1
3    1/4/2025       0      -4   晴~多云        东风   2-5级   30       良         1
2    1/3/2025     -11      -2   晴~多云        西风   4-8级   28       良         1
7    1/8/2025     -13      -6     小雨        西风   3-4级   39       差         1
11  1/12/2025       7      -1      冰        西风   2-5级   39       差         2
13  1/14/2025     -14      -1      霜        南风   3-5级   48       优         2
0    1/1/2025     -25      -6   晴~多云       西北风   1-2级   59       优         2
14  1/15/2025       7      -9      霜        南风   2-5级   28       良         3
9   1/10/2025       3      -2     阵雨        北风   2-5级   25       优         3
18  1/19/2025       1      -2      雾        东风   3-5级   59       优         3
10  1/11/2025       5      -4     阵雨        北风   3-5级   36       优         4
17  1/18/2025       3      -9      雾        西风   2-5级   39       优         4
12  1/13/2025       2      -4      冰        东风   2-5级   59       差         5
16  1/17/2025     -19      -6      雾        东风   3-4级   25       差         6
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值