2022年 11月 5日

python:怎么按日期进行排序

问题:
按日期对列表进行排序时会出现10、11、12月排到了前面去:
在这里插入图片描述

解决思路:
把日期标准化,转化成下面这样:
2015/01
2015/10
2015/11
2015/12
2015/02
2015/03
······

解决方法:
原始数据如下:
在这里插入图片描述

import pandas as pd
import datetime

#导入数据集
data = pd.read_csv("dataset.csv")

data = data.loc[:, ['date', 'value']] # 获取数据集中列名为date和value这两列

# 标准化日期,获取时间的“年、月、日”
def change_date(s):
    s = datetime.datetime.strptime(s, "%Y/%m/%d")  # 把日期标准化,转化结果如:2015/1/4 => 2015-01-04 00:00:00
    s = str(s)  # 上一步把date转化为了时间格式,因此要把date转回str格式
    return s[:10] # 只获取年月日,即“位置10”之前的字符串

data['date'] = data['date'].map(change_date)  # 用change_date函数处理列表中date这一列,如把“2015/1/4”转化为“2015-01-04”
data = data.sort_values(by='date')  # 按date这一列进行排序

print(data)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

输出如下:
第1列为index,第2列为date,第3列为value
在这里插入图片描述