【发布时间】:2019-04-27 19:39:01
【问题描述】:
我在 Python 2.7 中有以下 Pandas 数据框。
import pandas as pd
trial_num = [1,2,3,4,5]
sail_rem_time = ['11:33:11','16:29:05','09:37:56','21:43:31','17:42:06']
dfc = pd.DataFrame(zip(*[trial_num,sail_rem_time]),columns=['Temp_Reading','Time_of_Sail'])
print dfc
数据框如下所示:
Temp_Reading Time_of_Sail
1 11:33:11
2 16:29:05
3 09:37:56
4 21:43:31
5 17:42:06
此数据框来自 *.csv 文件。我使用 Pandas 将 *.csv 文件作为 Pandas 数据框读取。当我使用print dfc.dtypes 时,它显示Time_of_Sail 列的数据类型为object。我想将此列转换为 datetime 数据类型但我只想要时间部分 - 我不想要年、月、日。
我可以试试这个:
dfc['Time_of_Sail'] = pd.to_datetime(dfc['Time_of_Sail'])
dfc['Time_of_Sail'] = [time.time() for time in dfc['Time_of_Sail']]
但问题是当我运行print dfc.dtypes 时,它仍然显示Time_of_Sail 列是object。
有没有办法将此列转换为只有时间的日期时间格式?
其他信息:
要创建上述数据框和输出,这也可以:
import pandas as pd
trial_num = [1,2,3,4,5]
sail_rem_time = ['11:33:11','16:29:05','09:37:56','21:43:31','17:42:06']
data = [
[trial_num[0],sail_rem_time[0]],
[trial_num[1],sail_rem_time[1]],[trial_num[2],sail_rem_time[2]],
[trial_num[3],sail_rem_time[3]]
]
dfc = pd.DataFrame(data,columns=['Temp_Reading','Time_of_Sail'])
dfc['Time_of_Sail'] = pd.to_datetime(dfc['Time_of_Sail'])
dfc['Time_of_Sail'] = [time.time() for time in dfc['Time_of_Sail']]
print dfc
print dfc.dtypes
【问题讨论】:
-
我使用的是 python 3.4,但无法重现您的问题。当我尝试您建议的转换时,我发现 dtype 已更改为
datetime64[ns]。附带说明一下,您的数据框的构造对我不起作用,因为 zip 返回了一个迭代器,该迭代器不被 DataFrame 构造函数接受。这可能是一个非常愚蠢的问题,但是您是否尝试过运行您发布的确切代码? -
是的,刚刚又试了一次。对我有用。在我尝试了两种转换之后,
dtype是object,但如果只运行第一次转换,dtype会更改为datetime64[ns]。 -
你是说它现在可以工作了?
-
是的,它似乎对我有用。
-
好的,我添加了另一种方法来创建数据框和问题。这可能会有所帮助 - 这种新方法对我来说似乎更简单。
标签: python datetime pandas dataframe