python中时间日期格式的类型的转换(含pandas)

您所在的位置:网站首页 oracle中时间转换 python中时间日期格式的类型的转换(含pandas)

python中时间日期格式的类型的转换(含pandas)

2023-03-15 13:29| 来源: 网络整理| 查看: 265

日期格式转换不外乎就是日期格式-字符串格式-数值格式之间的相互转换,以及相同格式的不同形式间的转换,最常用的是datetime模块

一、日期时间格式转字符

首先获取当天日期

from datetime import datetime today = datetime.today() print(today) #datetime.datetime(2018, 9, 8, 22, 32, 46)

返回结果分别包含年月日时分秒,代表当前的日期时间,这是最常见的日期时间格式,在DataFrame的显示形式是“2018-09-08 22:32:46”,假如我们要把日期转换为字符串形式“2018-09-08”或“20180908”等,就要用到datetime的内置strftime函数。

today.strftime('%Y-%m-%d') #'2018-09-08' today.strftime('%Y%m%d') #'20180908' today.strftime('%Y-%m') #'2018-09' 二、字符转日期时间

第一种方法用datetime模块的strptime函数:

datetime.strptime('2018-09-08','%Y-%m-%d') #datetime.datetime(2018, 9, 8, 0, 0)

strptime函数接受两个参数,第一个是要转换的字符串日期,第二个是日期时间的格式化形式。 第二种方法可以借助pandas模块里面的to_datetime函数:

import pandas as pd pd.to_datetime('2018-09-08') #Timestamp('2018-09-08 00:00:00') pd.to_datetime('201909',format='%Y%m') #Timestamp('2019-09-01 00:00:00')

to_datetime函数常用的参数有两个,第一个是要转换的字符日期时间格式,第二个是该字符日期时间的格式化形式,对于简单的时间格式第二个参数format可以省略,to_datetime会自动识别,复杂一点的时间格式需要指定format。

三、数值转日期

这种情况一般发生在,数据库或者我们导入Python的数据该日期时间字段是以数值格式储存的,这时需要把它转为日期时间格式以方便后续的应用。 数值转日期只需先把数值转换为字符,再用上面介绍的字符转日期处理就可以了。

dt = 20180908 datetime.strptime(str(dt),'%Y%m%d') #datetime.datetime(2018, 9, 8, 0, 0) 四、pandas中的时间处理

首先,我们构造一个简单的数据示例 df

import random df = pd.DataFrame({ 'some_data' : [random.randint(100,999) for i in range(1,10)], 'a_col' : '2019-07-12', 'b_col' : datetime.datetime.now().date(), 'c_col' : time.time()}, index=range(1,10))

查看它的数据类型

some_data 9 non-null int64 a_col 9 non-null object b_col 9 non-null object c_col 9 non-null float64

如何转换为 pandas 自带的 datetime 类型

# 字符串类型转换为 datetime64[ns] 类型 df['a_col'] = pd.to_datetime(df['a_col']) # datetime.date 类型转换为 datetime64[ns] 类型 df['b_col'] = pd.to_datetime(df['b_col']) # 时间戳(float) 类型转换为 datetime64[ns] 类型 df['c_col'] = pd.to_datetime(df['c_col'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(x))))

这里还遇到了一个将默认int64格式转化为datetime64[M]

df['order_dt']=pd.to_datetime(df.order_dt,format="%Y%m%d") df['month']=df.order_dt.values.astype('datetime64[M]')

转载自https://blog.csdn.net/sinat_30715661/article/details/82534033 详细内容请看https://zhuanlan.zhihu.com/p/84582834



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3