这一节依然是关于时间的知识, 在平时的工作中, 有一个非常令我们恼火的就是时间的格式可以有很多种表达, 比如下面这张图, 我们看到同样是 2017年1月5日, 可以有很多种时间的格式, 我们需要先将格式统一才能进行下面的工作, Pandas 提供了这个函数 to_datetime(). 

下面通过一个例子来看下它的具体用法:

import pandas as pd
dates = ['2017-01-05', 'Jan 5, 2017', '01/05/2017', '2017.01.05', '2017/01/05','20170105'] pd.to_datetime(dates) 

输出:

DatetimeIndex(['2017-01-05', '2017-01-05', '2017-01-05', '2017-01-05', '2017-01-05', '2017-01-05'], dtype='datetime64[ns]', freq=None) 

来看下加上时间的效果:

dates = ['2017-01-05 2:30:00 PM', 'Jan 5, 2017 14:30:00', '01/05/2016', '2017.01.05', '2017/01/05','20170105'] pd.to_datetime(dates) 

输出:

DatetimeIndex(['2017-01-05 14:30:00', '2017-01-05 14:30:00', '2016-01-05 00:00:00', '2017-01-05 00:00:00', '2017-01-05 00:00:00', '2017-01-05 00:00:00'], dtype='datetime64[ns]', freq=None) 

如果时间的 list 里有无法转换的字符呢?

dates = ['2017-01-05 2:30:00 PM', 'Jan 5, 2017 14:30:00', '01/05/2016', '2017.01.05', '2017/01/05','20170105', 'ABC'] pd.to_datetime(dates) 

报错了:

TypeError                                 Traceback (most recent call last)
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/core/tools/datetimes.py in _convert_listlike(arg, box, format, name, tz) 376 try: --> 377 values, tz = conversion.datetime_to_datetime64(arg) 378 return DatetimeIndex._simple_new(values, name=name, tz=tz) pandas/_libs/tslibs/conversion.pyx in pandas._libs.tslibs.conversion.datetime_to_datetime64() TypeError: Unrecognized value type: <class 'str'> During handling of the above exception, another exception occurred: 

这种情况下, 我们需要给 to_datetime() 函数加个参数:

dates = ['2017-01-05 2:30:00 PM', 'Jan 5, 2017 14:30:00', '01/05/2016', '2017.01.05', '2017/01/05','20170105', 'ABC'] pd.to_datetime(dates, errors='ignore') 

输出:

array(['2017-01-05 2:30:00 PM', 'Jan 5, 2017 14:30:00', '01/05/2016', '2017.01.05', '2017/01/05', '20170105', 'ABC'], dtype=object) 

非时间字符被原样输出了, 还可以设置第二个参数 errors='coerce':

pd.to_datetime(dates, errors='coerce') 

输出:

DatetimeIndex(['2017-01-05 14:30:00', '2017-01-05 14:30:00', '2016-01-05 00:00:00', '2017-01-05 00:00:00', '2017-01-05 00:00:00', '2017-01-05 00:00:00', 'NaT'], dtype='datetime64[ns]', freq=None) 

我们知道关于时间的格式, 美国跟欧洲的格式是不一样的, 如下图所示:

如果以欧洲的时间格式表示 2019年1月5日, 应该会写成这样:

pd.to_datetime('5/1/2019') 

但是默认输出是按照美国的标准:

Timestamp('2019-05-01 00:00:00')

这时, 可以加一个参数指明第一个值为 day:

pd.to_datetime('5/1/2019', dayfirst=True) 

输出:

Timestamp('2019-01-05 00:00:00')

我们通常会用斜线作为年月日的分隔线, 但是其实这个分隔符是可以用任意字符代替的, 比如 $, 比如 #, 因为 Pandas 提供了一个参数 format 可以用来定义时间的表达格式, 比如下面的例子:

pd.to_datetime('5$1$2019', format='%d$%m$%Y') 

输出:

Timestamp('2019-01-05 00:00:00')

用 # 做分隔符的例子:

pd.to_datetime('5#1#2019', format='%d#%m#%Y') 

输出:

Timestamp('2019-01-05 00:00:00')

格林威治时间是从1970年1月1日开始累计的秒数的总和. 
我们可以通过下面这个网站获取时时的格林威治时间:
Epoch & Unix Timestamp Conversion Tools
可以用 to_datetime() 函数转换格林威治时间:

t = 1551966534
pd.to_datetime(t, unit='s') 

输出:

Timestamp('2019-03-07 13:48:54')

以 list 的形式传参, 以得到 list 的时间格式:

t = 1551966534
dt = pd.to_datetime([t], unit='s') dt 

输出:

DatetimeIndex(['2019-03-07 13:48:54'], dtype='datetime64[ns]', freq=None) 

通过 Pandas 的 view() 函数还可以将其再转换成格林威治时间:

dt.view('int64') 

输出:

array([1551966534000000000]) 

以上, 就是关于 to_datetime() 函数的基本使用方法, enjoy~~~

转载于:https://www.cnblogs.com/rachelross/p/10493556.html

Pandas 基础(17) - to_datetime相关推荐

  1. pandas object转float_数据分析篇 | Pandas基础用法6【完结篇】

    这是最后一篇,至此Pandas系列终于连载完了,有需要的也可以看看前面6篇,尽请收藏. 数据分析篇 | Pandas 概览 数据分析篇 | Pandas基础用法1数据分析篇 | Pandas基础用法2 ...

  2. Pandas基础入门知识点总结

    目录 1.pandas 常用类 1.1 Series 1.1.1创建 Series 1.1.2 访问 Series 数据 1.1.3 更新.插入和删除 1.2 DataFrame 1.2.1 创建 D ...

  3. 数据分析:numpy和pandas基础操作详解

    数据处理基础 numpy基础 1.numpy创建数组及基础属性 2.数组的特点 3.创建常见数组 4.数组数据类型 5.生成随机数 6.一维数组索引 7.布尔索引 8. 多维数组的索引 9.实际问题 ...

  4. pandas 第二章 pandas基础

    第二章 pandas基础 import numpy as np import pandas as pd import xlrd 在开始学习前,请保证pandas的版本号不低于如下所示的版本,否则请务必 ...

  5. Pandas 基础知识

    目录 第二章 pandas基础 一.文件的读取和写入 1. 文件读取 2. 数据写入 二.基本数据结构 1. Series 2. DataFrame 三.常用基本函数 1. 汇总函数 2. 特征统计函 ...

  6. 数据挖掘-3.Pandas基础

    文章目录 Pandas基础 学习目标 1Pandas介绍 学习目标 1 Pandas介绍 2 为什么使用Pandas 3 小结 2 Pandas数据结构 学习目标 1.Series 1.1 Serie ...

  7. Datawhale pandas学习任务二:pandas基础

    第二章Pandas基础 import numpy as np import pandas as pd pd.__version__ '1.1.3' 一.文件读取和写入 1.文件读取 read_csv ...

  8. Python数据分析——Pandas基础:dt.datetime与pivot_table()数据透视表

    系列文章目录 Chapter 1:创建与探索DF.排序.子集化:Python数据分析--Pandas基础入门+代码(一) Chapter 2:聚合函数,groupby,统计分析:Python数据分析- ...

  9. 快乐学习Pandas入门篇:Pandas基础

    Datawhale学习 作者:杨煜,Datawhale成员 寄语:本文对Pandas基础内容进行了梳理,从文件读取与写入.Series及DataFrame基本数据结构.常用基本函数及排序四个模块快速入 ...

最新文章

  1. SpringMVC4+JPA(Hibernate4)+Spring-data-jpa+Shiro整合
  2. linux sql语句传参数,Linux/Unixshell参数传递到SQL脚本
  3. “智慧城市”建设以前是传说,现在能体验
  4. php如何删除服务器图片,php如何删除服务器文件
  5. 深入理解磁盘文件系统之inode
  6. 【JSP】JSP基础学习记录(二)—— JSP的7个动作指令
  7. android系统级浮层,android 新手引导浮层的实现
  8. b站python弹幕签到_一个python脚本就可以B站查找弹幕发送者!
  9. java中将Fri Feb 19 17:32:34 CST 2021时间格式转为yyyy-MM-dd HH:mm:ss时间格式
  10. 数据分析案例-大数据相关招聘岗位可视化分析
  11. 笔记本固态硬盘大容量升级系统迁移(三天时间亲自实践,避坑专用)
  12. 快来和网红 ChatGPT 聊天!!
  13. WPS广告投放的优势!WPS广告投放的展现形式!
  14. 在手机安装 Kali Linux
  15. KindEditor实现多图片上传
  16. 封基表现继续好于大盘
  17. spongycastle加密算法
  18. [原译]模拟Office2010文件菜单的TabControl模板
  19. 浙江大华前端一二三面经(2021届校招)
  20. 基于Python的Opencv图像梯度处理

热门文章

  1. Android热修复更改图标,Android手写热修复(一)--ClassLoader
  2. python中如何导入sklearn_Python中常用包——sklearn主要模块和基本使用方法
  3. python中括号配对检测_使用模板匹配在Python上进行对象检测!(附代码)
  4. android里面的广播,Android里面的各种广播
  5. sp导出法线_SP导出贴图导Redshift渲染效果不同的问题
  6. 不要在循环,条件或嵌套函数中调用 Hook
  7. webpack5不要再用url-loader了
  8. vue3被删除的两个功能
  9. let声明变量时的特点
  10. java web简单线上游戏_有什么在线的编程游戏?