【问题标题】:python convert timestamp without year-month-daypython转换没有年月日的时间戳
【发布时间】:2024-04-30 03:20:02
【问题描述】:

我有一个时间列作为字符串的数据框,我应该只使用 h:m:sec.ms 将其转换为时间戳。举个例子:

import pandas as pd
df=pd.DataFrame({'time': ['02:21:18.110']})
df.time= pd.to_datetime(df.time , format="%H:%M:%S.%f")
df # I get 1900-01-01 02:21:18.110

没有格式标志,我得到当前日期 2020-12-16。如果没有似乎总是包含的年月日,我如何才能获得邮票。谢谢!

【问题讨论】:

  • pandas 不单独处理日期和时间。您要么有一个默认日期(如果没有提供日期),要么有一个默认时间(如果没有提供时间)。剥离两者之一(例如 with.dt.time)将为您留下一列数据类型对象而不是 datetime64。
  • 好点!那么没有办法只获得时间部分作为日期时间类型吗? (见下方答案)
  • 数据类型对象在此上下文中表示datetime.time 对象(检查type(df.time.iloc[0]) 以获得给定的答案)。那是 Python 的标准库日期时间,这意味着你不能使用 pandas 的dt accessor

标签: python pandas datetime


【解决方案1】:

如果以后需要通过类似 datetime 的方法处理值,最好通过 to_timedelta 将值转换为 timedeltas,而不是时间:

df['time'] = pd.to_timedelta(df['time'])
print (df)
                    time
0 0 days 02:21:18.110000

【讨论】:

  • 谢谢!我知道你会一如既往地提供有用的评论:)
【解决方案2】:

你需要这个:

df=pd.DataFrame({'time': ['02:21:18.110']})
df['time'] = pd.to_datetime(df['time']).dt.time

In [1023]: df
Out[1023]: 
              time
0  02:21:18.110000

【讨论】:

  • 我现在注意到:这给了我一个对象。我怎样才能将它作为日期时间,然后我可以使用它来重新采样数据?你能详细说明一下这种转换吗?
  • @physiker - 然后改用timedeltaslink