文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何在pandas中根据日期范围筛选数据

2023-06-06 10:38

关注

如何在pandas中根据日期范围筛选数据?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

日期转换

用来筛选的列是 date 类型,所以这里要把要筛选的日期范围从字符串转成 date 类型

比如我的数据包含列名为 trade_date,从 20050101 - 20190926 的数据,我要筛选出 20050606 - 20071016 的数据,那么,先如下转换数据类型:

s_date = datetime.datetime.strptime('20050606', '%Y%m%d').date()e_date = datetime.datetime.strptime('20071016', '%Y%m%d').date()

数据筛选

非常简单,一行代码就搞定了:

df = df[(df['tra_date'] >= s_date) & (df['tra_date'] <= e_date)]

注意事项

pandas提取某段时间范围数据的五种方法

import pandas as pd #读取文件df = pd.read_csv('./TianQi.csv') #获取九月份数据的几种方法#方法一  使用行索引切片,['2019/9/1':'2019/9/30'],缺点是要求日期必须是连续的。为了方便查看取前5条,以下其他方法均取前5条,由于未进行排序,顺序会有差异df.set_index('日期',inplace=True)print(df['2019/9/1':'2019/9/30'].head())  #或者print(df.loc['2019/9/1':'2019/9/30',:]) '''打印:     最高温度 最低温度  天气  风向 风级 空气质量日期                  2019/9/1 33℃ 19℃ 多云~晴 西南风 2级  良2019/9/2 34℃ 20℃   晴  南风 2级  良2019/9/3 33℃ 20℃   晴 东南风 2级  良2019/9/7 34℃ 21℃   晴 西南风 2级  良2019/9/8 35℃ 22℃ 晴~多云 东北风 2级  良''' #方法二  利用列表生成式和startwith('2019/9')生成bool列表,缺点,比较麻烦。print(df.loc[[True if i.startswith('2019/9') else False for i in df.index.tolist()],:].head())'''打印:     最高温度 最低温度  天气  风向 风级 空气质量日期                  2019/9/4 32℃ 19℃   晴 东南风 2级  良2019/9/5 33℃ 20℃   晴 东南风 2级  良2019/9/6 33℃ 20℃   晴 东南风 1级  良2019/9/1 33℃ 19℃ 多云~晴 西南风 2级  良2019/9/2 34℃ 20℃   晴  南风 2级  良''' #方法三  利用pandas的str和startswith('2019/9')|contains('2019/9')。df1 = pd.read_csv('./TianQi.csv')print(df1[df1['日期'].str.startswith('2019/9')].head())'''打印:     日期 最高温度 最低温度  天气  风向 风级 空气质量243 2019/9/4 32℃ 19℃   晴 东南风 2级  良244 2019/9/5 33℃ 20℃   晴 东南风 2级  良245 2019/9/6 33℃ 20℃   晴 东南风 1级  良246 2019/9/1 33℃ 19℃ 多云~晴 西南风 2级  良247 2019/9/2 34℃ 20℃   晴  南风 2级  良''' #方法四  讲日期转换成datetime类型df1['日期'] = pd.to_datetime(df1['日期'])df1.set_index('日期',inplace=True,drop=True)#print(df1['2019'])  #取2019年数据,或者df.loc['2019']print(df1['2019/09'].head())  ''' 取201909月数据,其他变形写法df['2019-9'] df['2019-09'] df['2019/9'] df.loc['2019-9',:] df.loc['2019-09',:] df.loc['2019/09',:] df.loc['2019/9',:]打印:      最高温度 最低温度  天气  风向 风级 空气质量日期                   2019-09-04 32℃ 19℃   晴 东南风 2级  良2019-09-05 33℃ 20℃   晴 东南风 2级  良2019-09-06 33℃ 20℃   晴 东南风 1级  良2019-09-01 33℃ 19℃ 多云~晴 西南风 2级  良2019-09-02 34℃ 20℃   晴  南风 2级  良'''#注意如果要获取某一天的数据,则必须使用切片,比如df['2019/9/1':'2019/9/1'] '''获取一段时间df1.truncate(after = '2019-9-01') # 返回 after 以前的数据df1.truncate(before = '2019-9-01') # 返回 before 以后的数据df1['20190901':'2019/9/10']''' #方法五  #读取文件时,通过parse_dates=['日期'],将日期转化为datetime类型,相当于 pd.to_datetime。同时可以使用index_col将那一列作为的行索引,相当有set_index。df2 = pd.read_csv('./TianQi.csv',parse_dates=['日期'])df2['年'] = df2['日期'].dt.yeardf2['月'] = df2['日期'].dt.monthqstr = "年=='2019' and 月=='9'"print(df2.query(qstr).head())'''打印:      日期 最高温度 最低温度  天气  风向 风级 空气质量   年 月243 2019-09-04 32℃ 19℃   晴 东南风 2级  良 2019 9244 2019-09-05 33℃ 20℃   晴 东南风 2级  良 2019 9245 2019-09-06 33℃ 20℃   晴 东南风 1级  良 2019 9246 2019-09-01 33℃ 19℃ 多云~晴 西南风 2级  良 2019 9247 2019-09-02 34℃ 20℃   晴  南风 2级  良 2019 9''' '''dt的其他常用属性和方法如下:df['日期'].dt.day  # 提取日期df['日期'].dt.year # 提取年份df['日期'].dt.hour # 提取小时df['日期'].dt.minute # 提取分钟df['日期'].dt.second # 提取秒df['日期'].dt.week # 一年中的第几周df['日期'].dt.weekday # 返回一周中的星期几,0代表星期一,6代表星期天df['日期'].dt.dayofyear # 返回一年的第几天df['日期'].dt.quarter # 得到每个日期分别是第几个季度。df['日期'].dt.is_month_start # 判断日期是否是每月的第一天df['日期'].dt.is_month_end # 判断日期是否是每月的最后一天df['日期'].dt.is_leap_year # 判断是否是闰年df['日期'].dt.month_name() # 返回月份的英文名称df['日期'].dt.to_period('Q') # M 表示月份,Q 表示季度,A 表示年度,D 表示按天df['日期'].dt.weekday_name # 返回星期几的英文 由于pandas版本问题,改变pandas版本在cmd中输入:pip install --upgrade pandas==0.25.3Series.dt.normalize() # 函数将给定系列对象中的时间转换为午夜。'''

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯