将日期+小时转换为时间戳 - pandas / python

时间:2018-04-12 21:28:55

标签: python pandas datetime dataframe

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

function fetch_sub_menu($sub_menu, $dash = '--'){
    foreach($sub_menu as $menu){
        echo "<option value='".$menu->cid."'>".$dash.$menu->cname."</option>";

        if(!empty($menu->sub)) {
            fetch_sub_menu($menu->sub, $dash.'--'); // <-- adding two dashes to $dash
        }       

    }
}

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

我已经尝试Date Hour 2017-01-01 0200 2017-01-01 0400 并将其转换为datetime对象,但我正在努力使用Hour列。请帮忙

1 个答案:

答案 0 :(得分:1)

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

我在这里假设您的小时是以字符串形式给出的(否则无法使用前导零)。

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)