pd.to_datetime中时间object转换datetime实例
作者:ZSYL 发布时间:2021-09-23 19:22:15
时间object转换datetime实例
首先说一下:
1/17/07 has the format “%m/%d/%y”
17-1-2007 has the format “%d-%m-%Y”
这是一部分的时间转换格式,通过以上的格式,你可以将DataFrame中的时间格式转换为以下等python格式:
0 2007-03-02
1 2007-03-22
2 2007-04-06
3 2007-04-14
4 2007-04-15
Name: date_parsed, dtype: datetime64[ns]
dtype:datetime64,这是转换过后的形式,其实你可以将原数据使用dtype查看列,来看它的格式。你会发现它是object形式的。这个object格式一般是python用来记录可变化的兑现的格式。这个格式并不能认出是时间格式,尽管我们一眼就能看出,但机器不行。
data = pd.read_csv('path') # 获取data数据
data['date'].head() # 查看一下日期列
0 01/02/1965
1 01/04/1965
2 01/05/1965
3 01/08/1965
4 01/09/1965
Name: Date, dtype: object
可以看出它为object格式,并非日期格式。
data['date_parsed'] = pd.to_datetime(data['date'], format="%m/%d/%y")
上面我们按python格式转换时间,并添加到新的一列中去。
dara['date_parsed'].head() #查看一下结果
1
0 1965-01-02
1 1965-01-04
2 1965-01-05
3 1965-01-08
4 1965-01-09
Name: data_parsed, dtype: datetime64[ns]
处理过程中可能会出现问题:
/opt/conda/lib/python3.6/site-packages/pandas/core/tools/datetimes.py in _convert_listlike(arg, box, format, name, tz)
271 try:
272 result = array_strptime(arg, format, exact=exact,
--> 273 errors=errors)
274 except tslib.OutOfBoundsDatetime:
275 if errors == 'raise':
pandas/_libs/tslibs/strptime.pyx in pandas._libs.tslibs.strptime.array_strptime()
ValueError: time data '1975-02-23T02:58:41.000Z' does not match format '%m/%d/%Y' (match)
反复的验证后发现应该是原数据有问题,部分时间数据格式有误:
比如: 1965-01-02,这是正常时间格式,但是有的时间数据是:1965-01-028、1969-011-26 等情况,时间数据长度超过正常的len=10.
因此我们需要数据预处理,清洗数据。
数据预处理
方式一
添加一列记录为每行时间的长度,apply(len):传入len()函数,处理Date列数据。
data['over_long'] = data['Date'].apply(len) # 添加一列记录为每行时间的长度,apply(len):传入len()函数
data.loc[data['over_long'] > 10] # 输出大于正常数据的行 这里会发现缺失有那么几行在作怪!!!
正常处理:
normal_dates = data.loc[data['over_long'] < 11] # 筛选出正常数据
normal_dates = normal_dates.copy() # 拷贝
normal_dates['data_parsed'] = pd.to_datetime(normal_dates['Date'],format='%m/%d/%Y') # 再次转换时间,没有报错
normal_dates['data_parsed'].head(10) # 输出查看没问题的数据
方式二
data['date_parsed'] = pd.to_datetime(data['Date'], format = "%m/%d/%Y", errors = 'coerce')
errors = 'coerce'
Pandas数据转换时遇到不能转换的数据转为NaN的参数设置 errors='coerce'
Pandas 提供了一个可选的参数 errors,传入 errors='coerce',Pandas 遇到不能转换的数据就会赋值为 NaN(Not a Number)
在这里,Pandas 遇到不能转化的时间数据后会赋值 Nan 并跳过。
方式三
data['date_parsed'] = pd.to_datetime(data['Date'], infer_datetime_format=True)
infer_datetime_format: boolean类型, default False
如果设定为True并且 parse_dates 可用,那么pandas将尝试转换为日期类型,如果可以转换,转换方法并解析。在某些情况下会快5~10倍。
在这里,Pandas 遇到不能转化的时间数据后会跳过。
参考:
Link
Link
来源:https://blog.csdn.net/qq_46092061/article/details/118673147
猜你喜欢
- 模块导入1.1 import导入模块所谓的模块其实就是一个外部的工具包,其中存在的其实就是Python文件,这些文件都实现了某种特定的功能,
- 这篇文章主要介绍了python重要函数eval多种用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- Python 处理 xml 文档的方法有很多,除了经典的 sax 和 dom 之外,还有一个 ElementTree。首先 import 之
- 1.变量的赋值操作只是多生成了一个变量,实际上还是指向同一个对象# -*- coding: utf-8 -*-class CPU: &nbs
- 代码如下:use tempdb if object_id('tempdb..#table') is not null dro
- 需要注意的是:更改完源程序.c文件,需要对整个项目重新编译、make install,对已经生成的文件进行更新,类似于之前VS中在一个类中增
- 下面是一段产生log-normal分布的代码,以此进行说明。clear all;clc;for t=1:100 Traffic(t) =cu
- 在 Python 中,函数可以通过以下语法定义和使用:def function_name(parameter1, parameter2, .
- 前言Multiprocessing.Pool可以提供指定数量的进程供用户调用,当有新的请求提交到pool中时,如果池还没有满,那么就会创建一
- 最近小编遇到一个奇葩问题,就是上传代码时拷贝vs里面的代码不能直接粘贴,否则空格会不符合要求,怎么解决此问题呢?下面小编给大家分享我的解决方
- 作为抛砖引玉,用python3实现百度云语音解析,首先需要模拟Post请求把音频压缩文件丢给百度解析。但是遇到一个问题客户端怎麽丢数据都是返
- 本文实例为大家分享了Python turtle实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下# Simple Snake Game in
- 在开发软件的过程中,我们经常会碰到需要在指定目录下生成文件和删除文件的操作,下面就演示一下怎样用python进行之类操作。生成文件impor
- php var_dump 函数作用是判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型.来看看var_du
- 有的时候取出全部数据库记录也许正好满足你的要求,不过,在大多数情况下我们通常只需得到部分记录。这样一来该如何设计查询呢?当然会更费点脑筋了,
- 新建项目如下图,比如sigma目录是我要上传的项目,在six-sigma目录下新建三个文件,分别是LICENSE也就是开源协议,README
- 前序在Python中,集合(Set) 是一个无序、不重复的序列,它不支持索引。集合一般用于元素去重或者一些数学中的操作像union,inte
- 1.typeoftypeof是一个运算符,有2种使用方式:typeof(表达式)和typeof 变量名,第一种是对表达式做运算,第二种是对变
- 以下以 IE 代替 Internet Explorer,以 MF 代替 
- 学生管理系统相信大家学各种语言的时候,练习总是会写各种管理系统吧,管理系统主要有对数据的增删查改操作,原理不难,适合作为练手的小程序数据的结