<h1 class="title">pandas 按日期范围筛选数据的实现</h1><div class="info"> &nbsp;更新时间:2021年02月20日 11:54:36 &nbsp; 作者:M-finder &nbsp; </div><div class="lbd clearfix"><span id="tit_down" class="jbTestPos"></span></div><div class="summary">这篇文章主要介绍了pandas 按日期范围筛选数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧</div><div class="lbd clearfix"><span id="art_up" class="jbTestPos"></span></div><div id="content"><p>pandas 是 python 中一个功能强大的库,这里就不再复述了,简单介绍下用日期范围筛选 pandas 数据。</p>

日期转换

用来筛选的列是 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)]

注意事项

  • 多个筛选条件并存时,不能用 and 连接,需要用单个 & 符号。
  • s_date <= df['trade_date'] <= e_date 等同于 and

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.year
df2[‘月’] = df2[‘日期’].dt.month
qstr = “年==‘2019’ and 月==‘9’”
print(df2.query(qstr).head())
‘’’
打印:
日期 最高温度 最低温度 天气 风向 风级 空气质量 年 月
243 2019-09-04 32℃ 19℃ 晴 东南风 2级 良 2019 9
244 2019-09-05 33℃ 20℃ 晴 东南风 2级 良 2019 9
245 2019-09-06 33℃ 20℃ 晴 东南风 1级 良 2019 9
246 2019-09-01 33℃ 19℃ 多云~晴 西南风 2级 良 2019 9
247 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.3
Series.dt.normalize() # 函数将给定系列对象中的时间转换为午夜。
‘’’

pandas 按日期范围筛选数据的实现相关推荐

  1. R语言基于日期范围筛选数据实战(Subset by a Date Range):日期范围之内的数据、日期范围之外的数据、日期之后的数据、日期之前的数据

    R语言基于日期范围筛选数据实战(Subset by a Date Range):日期范围之内的数据.日期范围之外的数据.日期之后的数据.日期之前的数据 目录 R语言基于日期范围筛选数据实战(Subse ...

  2. python按照日期筛选数据_pandas 按日期范围筛选数据的实现

    pandas 是 python 中一个功能强大的库,这里就不再复述了,简单介绍下用日期范围筛选 pandas 数据. 日期转换 用来筛选的列是 date 类型,所以这里要把要筛选的日期范围从字符串转成 ...

  3. python按照日期筛选数据_Pandas日期数据处理:如何按日期筛选、显示及统计数据...

    前言 pandas有着强大的日期数据处理功能,本期我们来了解下pandas处理日期数据的一些基本功能,主要包括以下三个方面: 按日期筛选数据 按日期显示数据 按日期统计数据 运行环境为 windows ...

  4. Pandas处理日期数据的常见操作集锦

    Pandas处理日期数据的常见操作集锦 数据读取及整理 获取某个日期之前/后或时间区间的数据 python 获取当前时间及前一天时间 pandas的日期时间间隔运算选取指定时间范围内/外的数据 利用p ...

  5. pandas 提取大于某值的数据_Pandas 数据处理(二) - 筛选数据

    Pandas 数据处理(二) - 筛选数据 使用demo.csv举几个栗子~ 1 2 3 4 5 6编号,日期,单价,数量 T001,2018-03-02 12:34:05,100,3 T002,20 ...

  6. pandas使用max函数和min函数计算dataframe日期(时间)数据列中最大日期和最小日期对应的数据行(maximum and minimum date or time row)

    pandas使用max函数和min函数计算dataframe日期(时间)数据列中最大日期和最小日期对应的数据行(maximum and minimum date or time row in data ...

  7. pandas获取dataframe数据列的数据类型、获取dataframe每类数据类型数据列的个数、使用select_dtypes函数、include参数以及exclude参数按照数据类型筛选数据

    pandas获取dataframe数据列的数据类型.获取dataframe每类数据类型数据列的个数.使用select_dtypes函数.include参数以及exclude参数按照数据类型筛选数据 目 ...

  8. pandas判断日期是否是闰年(is_leap_year)实战: 数据列转化为日期(时间)格式、判断pandas的日期数据列是否是闰年

    pandas判断日期是否是闰年(is_leap_year)实战: 数据列转化为日期(时间)格式.判断pandas的日期数据列是否是闰年 目录

  9. pandas使用组合条件筛选、过滤数据行

    pandas使用组合条件筛选.过滤数据行 目录 pandas使用组合条件筛选.过滤数据行 #仿真数据

最新文章

  1. Couldn't start MySQL! while starting XAMPP
  2. 使用php连接mysql数据库_PHP使用mysql与mysqli连接Mysql数据库用法示例
  3. FTPClient登录慢的问题
  4. DB2 常用操作命令集合
  5. javascript 获取上一页的url
  6. python的django项目中怎么添加app_django下如何创建多个app并设置urls
  7. python2.7 安装numpy no module name zlib
  8. Spring Cloud Alibaba | Dubbo 与 Spring Cloud 完美结合
  9. Ubuntu学习日记--Lesson7:文件权限管理chmod
  10. linux不同内核驱动移植问题,基于tiny4412的Linux内核移植 -- MMA7660驱动移植(九-2)...
  11. Python官方文档中文版在线教程
  12. 计算机数字合成音乐,数字音乐合成原理
  13. java封装-猫狗宠物店案例
  14. D365几个功能开发思路
  15. 开放封闭原则_开放/封闭原则
  16. Java poi导入合并单元格的excel数据【最完整】附pom文件和excel截图
  17. gitHub设置SSH Key
  18. 我的Substance Designer 学习笔记02-PBR材质学习理解
  19. F2FS 基础知识二
  20. C语言文件的读入与写入

热门文章

  1. DCM、PLL、PMCD、MMCM的区别与联系?
  2. csharp:Learn how to post JSON string to generic Handler using jQuery in ASP.Net C#.
  3. WebRTC内置debug工具,详细参数解读
  4. 百度的TSDB——可针对tag查询,应该类似kairosDB
  5. saltstack一些常用模块和api调用方法
  6. SharePoint2013 访问“/”应用程序中的服务器错误。解决方案:
  7. mysql join查询
  8. Resources about Rx(Reactive Extensions)
  9. java listmode_java中图形界面ListModel的用法?方法如何调用?
  10. VS下调用Matlab引擎