pandas - 使用datetime.time对象作为dtype

时间:2015-10-16 16:02:54

标签: python datetime pandas time-series

我正在阅读具有以下结构的Excel文件:

    A               B 
2015-09-05       15:05:32
2015-09-05       19:05:02

我正在使用

阅读此文件
df = pd.ExcelFile(filename).parse(..)

当我查看此DataFrame的dtype时,我可以看到日期被正确解析为datetime64个对象,但时间不是:

>>> df.dtypes
     A         datetime64[ns]
     B         object

奇怪的是,当我查看B的内容时,我可以看到它们都是datetime.time个对象

[s for s in main_df['B'].tolist() if type(s) is not datetime.time]
# There are no values that are *not* datetime.time objects

我想将此B列转换为我可以更容易使用的内容。例如,我想首先使用MultiIndex,然后使用时间(以便我可以分组和聚合)。或者我想加入这两个,以便我有一个完整的日期列。

但是在这一点上,我被困住了。我尝试将它们转换为datetime

main_df['B'] = main_df['B'].astype('datetime64')
ValueError: Could not convert object to NumPy datetime

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您只想加入这两个,可以将它们作为字符串加入:

df = pd.DataFrame({ 'A' : ['2015-09-05', '2015-09-05'], 'B': ['15:05:32', '19:05:02']})
pd.to_datetime(df.A + ' ' + df.B)

或者你可以使用datetime来组合:

import datetime

df.apply(lambda x: datetime.datetime.combine(x.A, x.B), axis=1)