我有两个数据框(请参见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
任何建议将不胜感激。
答案 0 :(得分:2)
出现错误的原因
TypeError: <class 'datetime.time'> is not convertible to datetime
就是说的话,您的df['Time']
包含datetime.time
对象,因此不能转换为datetime.datetime
或Timestamp
对象,这两个对象都需要{{ 1}}组件也要传递。
解决方案是合并date
和df['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)