【问题标题】:Convert date + hour to timestamp - pandas / python将日期+小时转换为时间戳 - 熊猫/python
【发布时间】:2018-09-23 04:10:24
【问题描述】:

我有一个数据集,其中数据框中有 2 列 - YYYY-MM-DD 格式的日期和另一列的小时格式为 0100(凌晨 1 点)直到 2300(下午 12 点)。

Date          Hour
2017-01-01   0200
2017-01-01   0400

等 为了让它为时间序列模式做好准备,我想将它们转换为日期时间对象并连接这些列。所需的示例输出:2017-01-01 01:00:00 等

我已经尝试过df['Date'] = pd.to_datetime(df['Date']) 并将其转换为日期时间对象,但我正在努力处理 Hour 列。请帮忙

【问题讨论】:

    标签: python pandas datetime dataframe


    【解决方案1】:

    这是一种方式。诀窍是注意pd.to_datetime 实际上非常灵活:它接受格式为“YYYY-MM-DD HHMM”的字符串。

    我在这里假设您的 Hour 以字符串形式给出(否则前导零是不可能的)。

    import pandas as pd
    
    df = pd.DataFrame({'Date': ['2017-01-01', '2017-01-01'],
                       'Hour': ['0200', '0400']})
    
    # as per @COLDSPEED's suggestion
    df['DateTime'] = pd.to_datetime(df['Date'] + ' ' + df['Hour'])
    
    print(df)
    
    #          Date  Hour            DateTime
    # 0  2017-01-01  0200 2017-01-01 02:00:00
    # 1  2017-01-01  0400 2017-01-01 04:00:00
    
    print(df.dtypes)
    
    # Date                object
    # Hour                object
    # DateTime    datetime64[ns]
    # dtype: object
    

    pd.DataFrame.apply 的先前版本可能但效率低:

    df['DateTime'] = df.apply(lambda x: x['Date'] + ' ' + x['Hour'], axis=1)\
                       .apply(pd.to_datetime)
    

    【讨论】:

    • pd.to_datetime(df.Date + ' ' + df.Hour)
    • 非常感谢@coldspeed 的帮助!
    猜你喜欢
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 2016-03-27
    相关资源
    最近更新 更多