这一节依然是关于时间的知识, 在平时的工作中, 有一个非常令我们恼火的就是时间的格式可以有很多种表达, 比如下面这张图, 我们看到同样是 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~~~

Pandas 基础(17) - to_datetime的更多相关文章

  1. numpy&pandas基础

    numpy基础 import numpy as np 定义array In [156]: np.ones(3) Out[156]: array([1., 1., 1.]) In [157]: np.o ...

  2. 数据分析02 /pandas基础

    数据分析02 /pandas基础 目录 数据分析02 /pandas基础 1. pandas简介 2. Series 3. DataFrame 4. 总结: 1. pandas简介 numpy能够帮助 ...

  3. 利用Python进行数据分析(12) pandas基础: 数据合并

    pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...

  4. 利用Python进行数据分析(9) pandas基础: 汇总统计和计算

    pandas 对象拥有一些常用的数学和统计方法.   例如,sum() 方法,进行列小计:   sum() 方法传入 axis=1 指定为横向汇总,即行小计:   idxmax() 获取最大值对应的索 ...

  5. 利用Python进行数据分析(8) pandas基础: Series和DataFrame的基本操作

    一.reindex() 方法:重新索引 针对 Series   重新索引指的是根据index参数重新进行排序. 如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行. 不想用缺失值,可以用 ...

  6. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  7. [.net 面向对象编程基础] (17) 数组与集合

    [.net 面向对象编程基础] (17) 数组与集合 学习了前面的C#三大特性,及接口,抽象类这些相对抽象的东西以后,是不是有点很累的感觉.具体的东西总是容易理解,因此我们在介绍前面抽象概念的时候,总 ...

  8. Pandas基础学习与Spark Python初探

    摘要:pandas是一个强大的Python数据分析工具包,pandas的两个主要数据结构Series(一维)和DataFrame(二维)处理了金融,统计,社会中的绝大多数典型用例科学,以及许多工程领域 ...

  9. Pandas 基础(1) - 初识及安装 yupyter

    Hello, 大家好, 昨天说了我会再更新一个关于 Pandas 基础知识的教程, 这里就是啦......Pandas 被广泛应用于数据分析领域, 是一个很好的分析工具, 也是我们后面学习 machi ...

随机推荐

  1. Git常用功能记录

    1. git查看某个文件的修改历史 git log --pretty 然后使用下面的命令可列出文件的所有改动历史,注意,这里着眼于具体的一个文件,而不是git库,如果是库,那改动可多了去了- git ...

  2. 贝塞尔曲线java实现

    主类:BezierFrame package bezierT; import java.awt.Color; import java.awt.Dimension; import java.awt.Ev ...

  3. sublime There are no packages available for installation 问题的解决办法

    这个是因为IPv6的原因, 因此我们需要修改我们的 /etc/hosts文件. 第一步: 执行: nm-tool 获取DNS的信息 例如: DNS: 192.168.1.11 第二步: 在/etc/h ...

  4. JavaScript 判断当前设备是否是移动端还是PC

    if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){ alert('移动端')}else { alert('PC端') }

  5. jOrgChart二叉树效果

    引进文件: <link rel="stylesheet" type="text/css" href="Public/com/jQrgChart/ ...

  6. C++——简单数据类型及布尔类型

    一. 简单数据类型 数据类型描述了对象在内存存储区中占据的空间大小,描述了对象能够表示的数据范围 和类型.C++语言中常用的数据类型有整型.实型.字符型(这3种类型也被称之为简单数 据类型).数组类型 ...

  7. Json常用序列化工具包大比拼

    一.前言 Json已成为计算机编程中最常用的数据传输和存储格式之一,所以对Json的序列化和反序列化工具的选择也是互联网系统中比较重要的环节,尤其在高并发下的执行效率,可能会直接影响系统的吞吐率.本文 ...

  8. 网络-01-端口号-linux端口详解大全

    0 | 无效端口,通常用于分析操作系统1 | 传输控制协议端口服务多路开关选择器2 | 管理实用程序3 | 压缩进程5 | 远程作业登录7 | 回显9 | 丢弃11 | 在线用户13 | 时间17 | ...

  9. [动态规划]数字三角形(版本I-III)

    level 1 1.1题目 1.1.1题目描述 考虑在下面被显示的数字金字塔. 写一个程序来计算从最高点开始在底部任意处结束的路径经过数字的和的最大.每一步可以走到左下方的点也可以到达右下方的点. 在 ...

  10. 《AI算法工程师手册》

    本文转载自:http://www.huaxiaozhuan.com/ 这是一份机器学习算法和技能的学习手册,可以作为学习工作的参考,都看一遍应该能收获满满吧. 作者华校专,曾任阿里巴巴资深算法工程师, ...