首页 > 解决方案 > 如何将列转换为以毫秒为单位的时间?

问题描述

我有以下包含 2 列的 txt 文件:

Date, Time
2013/1/4, 07:00:00.0
2013/1/4, 07:00:00.1
2013/1/4, 07:00:00.2
2013/1/4, 07:00:00.3
2013/1/4, 07:00:00.4
2013/1/4, 07:00:00.5
2013/1/4, 07:00:00.6
2013/1/4, 07:00:00.7
2013/1/4, 07:00:00.8
2013/1/4, 07:00:00.9
2013/1/4, 07:00:00.10
2013/1/4, 07:00:00.11
2013/1/4, 07:00:00.12
2013/1/4, 07:00:00.13
2013/1/4, 07:00:00.14
2013/1/4, 07:00:00.15
2013/1/4, 07:00:00.16

我需要将对象转换为时间格式。对于使用的“日期”(并且它按预期工作):

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

对于我曾经关注的“时间”(全部失败,是的,我试图搜索并阅读熊猫文档)

df['Time']= (pd.to_datetime(df['Time'].str.strip(), format='%H:%M:%S:%F'))
df['Time'] = datetime.time(df['Time'], '%H:%M:%S,%f')
df['Time'] = datetime.datetime.strptime("%H:%M:%S,%f").timestamp()

甚至尝试过这个:

df['DateTime'] = pd.to_datetime(df.pop('Date')) + pd.to_timedelta(df.pop('Time'))

请建议我在这里做错了什么以完成时间格式。非常感谢您的帮助!

标签: pythonpandas

解决方案


将列连接为字符串可能更简单,将它们转换为日期/时间对象,然后进一步操作它们(如果需要)。

对于您的数据,以下内容对我有用:

pd.to_datetime(df.Date + ' ' + df.Time)

(请注意df.Date + ' ' + df.Time,在您的情况下,以熊猫可以理解的格式制作字符串系列。)

要获取小时,例如:

df['foo'] = pd.to_datetime(df.Date + ' ' + df.Time)
df.foo.dt.hour

推荐阅读