尝试将对象转换为DateTime,得到TypeError

时间:2019-01-31 13:04:57

标签: python python-3.x pandas datetime dataframe

我有两个数据框(请参见here),其中包含日期和时间。 第一个数据帧的详细信息是:

Date         object
Time         object
Channel1    float64
Channel2    float64
Channel3    float64
Channel4    float64
Channel5    float64
dtype: object

第二个数据帧的详细信息是:

Date     object
Time     object
Mean    float64
STD     float64
Min     float64
Max     float64
dtype: object

我正在尝试将时间转换为DateTime对象,以便随后可以进行计算以使时间相对于第一个时间实例(即最早的时间将变为0,然后所有其他时间将在开始)。

当我尝试(来自here)时:

df['Time'] = df['Time'].apply(pd.Timestamp)

我收到此错误:

TypeError: Cannot convert input [15:35:45] of type <class 'datetime.time'> to Timestamp

当我尝试(来自here)时:

df['Time'] = pd.to_datetime(df['Time'])

但是它给了我这个错误:

TypeError: <class 'datetime.time'> is not convertible to datetime

任何建议将不胜感激。

2 个答案:

答案 0 :(得分:2)

出现错误的原因

TypeError: <class 'datetime.time'> is not convertible to datetime

就是说的话,您的df['Time']包含datetime.time对象,因此不能转换为datetime.datetimeTimestamp对象,这两个对象都需要{{ 1}}组件也要传递。

解决方案是合并datedf['Date'],然后将其传递给df['Time']。参见下面的代码示例:

pd.to_datetime

输出

df = pd.DataFrame({'Date': ['3/11/2000', '3/12/2000', '3/13/2000'],
               'Time': ['15:35:45', '18:35:45', '05:35:45']})

df['datetime'] = pd.to_datetime(df['Date'] + ' ' + df['Time'])

答案 1 :(得分:0)

最后,对于我拥有的两个数据框,我的解决方案有所不同。

对于第一个数据帧,将“日期”列与“时间”列结合在一起的解决方案效果很好:

df['Date Time'] = df['Date'] + ' ' + df['Time']   

将两列合并后,将使用以下代码将其转换为日期时间对象(请注意,格式为'%d /%m /%Y%H:%M:%S'部分,因为否则会混淆月份/日期并使用美国格式,即认为11/12/2018是11月12日,而不是12月11日):

df['Date Time'] = pd.to_datetime(df['Date Time'], format='%d/%m/%Y %H:%M:%S')

对于我的第二个数据框,我在数据处理过程中走得更早,找到了一个将日期和月份直接保存到单个列的选项。之后,以下代码将其转换为日期时间对象:

df['Date Time'] = df['Date Time'].apply(pd.Timestamp)