01-pandas时间类型dt类属性及方法
pandas时间类型的所有属性及方法
方便今后自己复习
import pandas as pd
from datetime import datetime, timedelta
import localedata = {'ID': ['000{}'.format(str(i)) for i in range(1, 7)],'name': ['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff'],'gender': [True, True, False, True, False, True],'birthday': [datetime(2004, 10, 1, 10, 32, 45, 85), datetime(2000, 11, 27), datetime(2002, 1, 27), datetime(2002, 8, 15),datetime(2003, 1, 1), datetime(2002, 12, 31)],'height': [1.1, 1.2, 1.3, 1.4, 1.5, 1.6]
}df = pd.DataFrame(data)
df['birthday']
0 2004-10-01 10:32:45.000085
1 2000-11-27 00:00:00.000000
2 2002-01-27 00:00:00.000000
3 2002-08-15 00:00:00.000000
4 2003-01-01 00:00:00.000000
5 2002-12-31 00:00:00.000000
Name: birthday, dtype: datetime64[ns]
df['birthday'].dt.year # 获取年
0 2004
1 2000
2 2002
3 2002
4 2003
5 2002
Name: birthday, dtype: int64
df['birthday'].dt.month # 获取月
0 10
1 11
2 1
3 8
4 1
5 12
Name: birthday, dtype: int64
df['birthday'].dt.day # 获取天
0 1
1 27
2 27
3 15
4 1
5 31
Name: birthday, dtype: int64
df['birthday'].dt.time # 获取时间
0 10:32:45.000085
1 00:00:00
2 00:00:00
3 00:00:00
4 00:00:00
5 00:00:00
Name: birthday, dtype: object
df['birthday'].dt.timetz # 获取时间
0 10:32:45.000085
1 00:00:00
2 00:00:00
3 00:00:00
4 00:00:00
5 00:00:00
Name: birthday, dtype: object
df['birthday'].dt.hour # 获取小时
0 10
1 0
2 0
3 0
4 0
5 0
Name: birthday, dtype: int64
df['birthday'].dt.second # 获取分钟
0 45
1 0
2 0
3 0
4 0
5 0
Name: birthday, dtype: int64
df['birthday'].dt.microsecond # 获取毫秒
0 85
1 0
2 0
3 0
4 0
5 0
Name: birthday, dtype: int64
df['birthday'].dt.day_name() # 获取星期
0 Friday
1 Monday
2 Sunday
3 Thursday
4 Wednesday
5 Tuesday
Name: birthday, dtype: object
df['birthday'].dt.weekday # 获取一周的第几天
0 4
1 0
2 6
3 3
4 2
5 1
Name: birthday, dtype: int64
df['birthday'].dt.dayofweek # 获取一周的第几天
0 4
1 0
2 6
3 3
4 2
5 1
Name: birthday, dtype: int64
df['birthday'].dt.dayofyear # 获取一年的第多少天
0 275
1 332
2 27
3 227
4 1
5 365
Name: birthday, dtype: int64
df['birthday'].dt.is_leap_year # 判断是否为闰年
0 True
1 True
2 False
3 False
4 False
5 False
Name: birthday, dtype: bool
df['birthday'].dt.is_month_end # 判断是否是一个月的最后一天
0 False
1 False
2 False
3 False
4 False
5 True
Name: birthday, dtype: bool
df['birthday'].dt.is_quarter_end # 判断是否是季度的最后一天
0 False
1 False
2 False
3 False
4 False
5 True
Name: birthday, dtype: bool
df['birthday'].dt.is_quarter_start # 判断是否是季度的第一天
0 True
1 False
2 False
3 False
4 True
5 False
Name: birthday, dtype: bool
df['birthday'].dt.is_year_start # 判断是否是一年的第一天
0 False
1 False
2 False
3 False
4 True
5 False
Name: birthday, dtype: bool
df['birthday'].dt.quarter # 判断是一年的第几个季度
0 4
1 4
2 1
3 3
4 1
5 4
Name: birthday, dtype: int64
df['birthday'].dt.to_period(freq='Y') # freq 的值选择要获取的部分
0 2004
1 2000
2 2002
3 2002
4 2003
5 2002
Name: birthday, dtype: period[A-DEC]
df['birthday'].dt.to_pydatetime() # 返回datetime模块的时间类型
array([datetime.datetime(2004, 10, 1, 10, 32, 45, 85),datetime.datetime(2000, 11, 27, 0, 0),datetime.datetime(2002, 1, 27, 0, 0),datetime.datetime(2002, 8, 15, 0, 0),datetime.datetime(2003, 1, 1, 0, 0),datetime.datetime(2002, 12, 31, 0, 0)], dtype=object)
df['birthday'].dt.strftime('%Y/%m/%d') # 修改日期格式,
0 2004/10/01
1 2000/11/27
2 2002/01/27
3 2002/08/15
4 2003/01/01
5 2002/12/31
Name: birthday, dtype: object
df['birthday'].dt.floor('min') # 向下取整 可选参数有 'D','H','S', 'min'
0 2004-10-01 10:32:00
1 2000-11-27 00:00:00
2 2002-01-27 00:00:00
3 2002-08-15 00:00:00
4 2003-01-01 00:00:00
5 2002-12-31 00:00:00
Name: birthday, dtype: datetime64[ns]
df['birthday'].dt.ceil('H') # 向上取整
0 2004-10-01 11:00:00
1 2000-11-27 00:00:00
2 2002-01-27 00:00:00
3 2002-08-15 00:00:00
4 2003-01-01 00:00:00
5 2002-12-31 00:00:00
Name: birthday, dtype: datetime64[ns]
df['birthday'].dt.round('H') # 类似于四舍五入
0 2004-10-01 11:00:00
1 2000-11-27 00:00:00
2 2002-01-27 00:00:00
3 2002-08-15 00:00:00
4 2003-01-01 00:00:00
5 2002-12-31 00:00:00
Name: birthday, dtype: datetime64[ns]
df1 = df['birthday'].dt.tz_localize('Asia/Shanghai') # 按时区标准化
df1
0 2004-10-01 10:32:45.000085+08:00
1 2000-11-27 00:00:00+08:00
2 2002-01-27 00:00:00+08:00
3 2002-08-15 00:00:00+08:00
4 2003-01-01 00:00:00+08:00
5 2002-12-31 00:00:00+08:00
Name: birthday, dtype: datetime64[ns, Asia/Shanghai]
df1.dt.tz # 获取时区信息
<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>
df1.dt.tz_convert(None) # 转换时区,None表示转换为UTC时间后将删除时区
0 2004-10-01 02:32:45.000085
1 2000-11-26 16:00:00.000000
2 2002-01-26 16:00:00.000000
3 2002-08-14 16:00:00.000000
4 2002-12-31 16:00:00.000000
5 2002-12-30 16:00:00.000000
Name: birthday, dtype: datetime64[ns]
转换案例
import datetimedef strplus(val):if len(str(val)) == 1:return '0'+str(val)else:return str(val)def gender(val):if val:return 'male'else:return 'Female'df['year'] = df['birthday'].dt.year
df['age'] = datetime.datetime.now().year - df['birthday'].dt.year
df['birth'] = df['birthday'].dt.year.apply(str).str.cat(df['birthday'].dt.month.apply(strplus), sep='年')
df['gender'] = df['gender'].apply(gender)
df
ID | name | gender | birthday | height | year | age | birth | |
---|---|---|---|---|---|---|---|---|
0 | 0001 | aaa | male | 2004-10-01 10:32:45.000085 | 1.1 | 2004 | 16 | 2004年10 |
1 | 0002 | bbb | male | 2000-11-27 00:00:00.000000 | 1.2 | 2000 | 20 | 2000年11 |
2 | 0003 | ccc | male | 2002-01-27 00:00:00.000000 | 1.3 | 2002 | 18 | 2002年01 |
3 | 0004 | ddd | male | 2002-08-15 00:00:00.000000 | 1.4 | 2002 | 18 | 2002年08 |
4 | 0005 | eee | male | 2003-01-01 00:00:00.000000 | 1.5 | 2003 | 17 | 2003年01 |
5 | 0006 | fff | male | 2002-12-31 00:00:00.000000 | 1.6 | 2002 | 18 | 2002年12 |
df['name'].groupby(df['birthday'].dt.year).count()
birthday
2000 1
2002 3
2003 1
2004 1
Name: name, dtype: int64
01-pandas时间类型dt类属性及方法相关推荐
- python pandas 日期_python+pandas+时间、日期以及时间序列处理方法
python+pandas+时间.日期以及时间序列处理方法 先简单的了解下日期和时间数据类型及工具 python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time ...
- python pandas 日期格式_python+pandas+时间、日期以及时间序列处理方法
先简单的了解下日期和时间数据类型及工具 python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time以及calendar模块会被经常用到. datetime以毫 ...
- python处理时间的标准函数库_python+pandas+时间、日期以及时间序列处理方法
先简单的了解下日期和时间数据类型及工具 python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time以及calendar模块会被经常用到. datetime以毫 ...
- 27、Python 面向对象(创建类、创建实例对象、访问属性、内置类属性、对象销毁、类的继承、方法重写、基础重载方法、运算符重载、类属性与方法、下划线双下划线)
27Python面向对象(Python2) Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. ...
- 基于Qt5.14.2和mingw的Qt源码学习(三) — 元对象系统简介及moc工具是如何保存类属性和方法的
基于Qt5.14.2和mingw的Qt源码学习(三) - 元对象系统简介及moc工具是如何保存类属性和方法的 一.什么是元对象系统 1.元对象系统目的 2.实现元对象系统的关键 3.元对象系统的其他一 ...
- java 编写方法和属性,Java类属性及方法的定义
文章导读 [在定义类时,经常需要抽象出它的属性和方法,并定义在类的主体中.本文探讨Java类属性及方法的定义和使用.通过本文的学习,你将了解如何在Java类中定义属性及方法.属性值的设置和获取.] 本 ...
- java面向对象-------类属性和方法,不同类之间调用
package java面向对象; /** * 类的创建 */public class Stu { //l类属性 int age; int id; String name; Computer comp ...
- python 类装饰器和继承_python装饰器、继承、元类、mixin,四种給类动态添加类属性和方法的方式(一)...
介绍装饰器.继承.元类.mixin,四种給类动态添加类属性和方法的方式 有时候需要給类添加额外的东西,有些东西很频繁,每个类都需要,如果不想反复的复制粘贴到每个类,可以动态添加. 1 #coding= ...
- python类中的属性分为类属性和实例属性两种_python从入门到大神---1、初始化实例、类属性、方法...
python从入门到大神---1.初始化实例.类属性.方法 一.总结 一句话总结: 方法不加括号是代码段:感觉python方法和js,php很类似,不加括号是代码段,加括号变成方法,比如f,f() 1 ...
最新文章
- 【PHPMailer】写一封邮件
- 如何调试进入Asp.NET MVC源代码
- 如何有效提升网站转化率?从四个方面着手分析!
- clob和blob是不是可以进行模糊查询_为省几十元买假内存条?金士顿内存条真伪查询与辨别方法...
- Tensorflow详解保存模型(基础版)
- 谷歌浏览器服务器协议url,谷歌浏览器在地址栏输入URL到页面展示时中间发生了什么?...
- 蔡崇信完成对布鲁克林篮网和巴克莱中心的全资收购
- Python使用openpyxl和pandas处理学生成绩Excel文件实用案例
- python——sort方法、sorted函数——排序
- nginx 限制访问
- gcc警告: warning: dereferencing type-punned pointer will break strict-aliasing rules
- 单细胞多组学联合应用
- Quorum入门2.0:Quorum-企业以太坊-开始尝试
- javascript编写奇迹mu原版(含服务端)(4)来到勇者大陆
- 华为手机自带浏览器无法下载 iis 网站 apk 问题解决方案(和SSL有关)
- eclipes代码提示及防空格自动补全
- vue3+ts实现视频根据时间轴截取,并可以通过传入截取起止时间进行当前剪辑的回显
- 汉语编程联姻大中院校
- 北理计算机学硕保研,2019计算机保研夏令营经验-上科大、北理、北航、中科院计算所夏令营...
- 408 | 【2010年】计算机统考真题 自用回顾知识点整理
热门文章
- 大一c语言考试题信阳师范学院,zhaodapeng6
- 会声会影 我们后惠无期
- 经典按键java手机游戏_盘点曾经红极一时的手机游戏,每款都是经典中的经典...
- Koordinator 1.0 正式发布:业界首个生产可用、面向规模场景的开源混部系统
- Linux驱动学习--V4L2设备(二)subdev的ops介绍及media framework深入解析
- 自定义拍照时 拍照界面_在用透射电镜拍照时为什么经常要插入物镜光阑?
- C语言:while与do while循环语句
- LWN:Intel CPU的间接跳转保护功能!
- 66万新购奔驰漏油,车主欲暂停还贷,奔驰金融:贷款必须还!
- 2023电子科技大学计算机考研信息汇总