美文网首页
python中时间日期格式的类型的转换(含pandas)

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

作者: 我就是那个无敌大长腿 | 来源:发表于2020-08-15 20:29 被阅读0次

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

    相关文章

      网友评论

          本文标题:python中时间日期格式的类型的转换(含pandas)

          本文链接:https://www.haomeiwen.com/subject/qeuwdktx.html