在pandas里pd.Timedelta的简单介绍及使用方法 |
您所在的位置:网站首页 › 腮红的用法简洁介绍 › 在pandas里pd.Timedelta的简单介绍及使用方法 |
在pandas里pd.Timedelta的使用方法 1.Timedelta基本概念 Timedelta参数 通过字符串传递参数 通过整数传递参数 通过数据偏移 2.Timedelta简单利用 计算生日为1993年5月27日的人今年的年龄 优化计算虚岁和实岁 实岁 虚岁 3.利用Timedelta筛选数据 1.Timedelta基本概念首先导入pandas库 import pandas as pd;Timedelta在pandas中是一个表示两个datetime值之间的差(如日,秒和微妙)的类型,2个Datetime数据运算相减得出的结果就是一个Timedelta数据类型 Datetime只支持+操作,其余运算符操作不会报错 pd.to_datetime('2019-9-4') - pd.to_datetime('2018-1-1')代码结果: Timedelta('611 days 00:00:00')可以看到,结果是一个Timedelta类型,并且算出了2019年9月4日到2018年1月日共有多少天 如果只写年默认1月1日 pd.to_datetime('2019-9-4') - pd.to_datetime('2018')代码结果: Timedelta('611 days 00:00:00')只写年月默认1日 pd.to_datetime('2019-9-4') - pd.to_datetime('2018-1')代码结果: Timedelta('611 days 00:00:00')可以看到结果是一样的 Timedelta参数 通过字符串传递参数 pd.Timedelta('3 days 3 hours 3 minutes 30 seconds')代码结果: Timedelta('3 days 03:03:30') 通过整数传递参数 pd.Timedelta(5,unit='d')代码结果: Timedelta('5 days 00:00:00') 通过数据偏移 pd.Timedelta(days=2)代码结果: Timedelta('2 days 00:00:00')以上方法可根据喜好使用 2.Timedelta简单利用 计算生日为1993年5月27日的人今年的年龄 age = (pd.to_datetime('2019-9-4') - pd.to_datetime('1993-5-27')) / pd.Timedelta(days=365) print(age)代码结果: 26.29041095890411计算生日为1993年5月27日的人今年的年龄 当然也可以用pd.datetime.now()获取当前时间 age = (pd.datetime.now() - pd.to_datetime('1993-5-27')) / pd.Timedelta(days=365) print(age)代码结果: 26.29180006733137可以看到结果有所不同,那是因为datetime默认从毫秒开始,所以时间一直在变化 我们可以简单优化处理一下 优化计算虚岁和实岁 实岁 age = (pd.datetime.now() - pd.to_datetime('1993-5-27')) / pd.Timedelta(days=365) age = int(age) print('实岁是{}岁'.format(age))代码结果: 实岁是26岁 虚岁 age = (pd.datetime.now() - pd.to_datetime('1993-5-27')) / pd.Timedelta(days=365) age = int(age) + 1 print('虚岁是{}岁'.format(age))3.利用Timedelta筛选数据 在实际工作中 我们经常会碰到对于时间的筛选 比如到货日期、注册日期等 pandas里可以利用Timedelta对日期进行一些筛选处理 实际中大多时间数据都以字符串类型存储 首先看一个DataFrame 这样的表格我们日常经常看到 现在我们先看一下发货日期列是什么类型 可以看到目前发货日期列是object 所以我们首先要用pd.to_datetime将这列转为时间类型 df['发货日期'] = pd.to_datetime(df['发货日期'])可以看发货日期列已经修改为datetime类型 pandas的to_datetime功能还是比较强大,能够自动识别出日期格式,无论你是YYYY-MM-DD还是YYYY/MM/DD,可以转换很多不同的日期格式 格式修改完毕后我们就可以对它进行操作了 我想要筛选出发货日期距今天30天之内的所有数据(当前日期为2020年3月24日) df[(pd.datetime.now()- df['发货日期']) < pd.Timedelta(days=30)]最新的pandas将会要取消内置的datetime,需要外部导入datetime模块,本质上是一样操作的 结果:
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |