Python pandas-使用datetime.time对象作为数据类型
我正在读取具有以下结构的Excel文件:Python pandas-使用datetime.time对象作为数据类型,python,datetime,pandas,time-series,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(..) 当我查看此数据帧的dtype时,我可以看到日期被正确解析为datetime64对象,但时间不是: >>> df.dtypes A datetime64[ns] B
A B
2015-09-05 15:05:32
2015-09-05 19:05:02
我正在使用
df = pd.ExcelFile(filename).parse(..)
当我查看此数据帧的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
列转换成我更容易使用的内容。例如,我想先使用多索引
,然后使用时间(这样我就可以进行分组和聚合)。或者我想加入这两个,这样我就有了一个列,那就是完整的日期
但在这一点上,我被卡住了。我尝试将它们转换为datetime
:
main_df['B'] = main_df['B'].astype('datetime64')
ValueError: Could not convert object to NumPy datetime
有什么想法吗?如果您只想将两者结合起来,您可以将它们作为字符串结合起来:
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)
如果您只想将两者连接起来,可以将它们作为字符串连接起来:
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)
当两个数据类型都是对象时,这部分工作正常,但如果其中一个数据类型是
datetime64
,则会出现错误。如果您在两行之间添加此项,例如:df['A']=df['A'].astype('datetime64')
我想您可以在读入时将其数据类型指定为字符串,或者在编辑的答案中使用datetime。当数据类型都是对象时,这部分起作用,但如果其中一个数据类型是datetime64
,则会给出一个错误。如果您在两行之间添加此项,例如:df['A']=df['A'].astype('datetime64')
我想您可以在读入时将其数据类型指定为string,或者在编辑的答案中使用datetime。