panda提取时间戳中的日期_python中时间日期格式的类型的转换(含pandas)

v2-35e195e5711912c984f06ab31d45d95f_1440w.jpg?source=172ae18b

日期格式转换不外乎就是日期格式-字符串格式-数值格式之间的相互转换,以及相同格式的不同形式间的转换,最常用的是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

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值