我正在阅读具有以下结构的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
有什么想法吗?
答案 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)