【问题标题】:Trying to get consistent time format in Pandas试图在 Pandas 中获得一致的时间格式
【发布时间】:2020-05-25 07:55:46
【问题描述】:

我在将一些时间戳转换为一致格式时遇到问题。

我有时间戳: ‘00:00:02.285932’ ‘00:00:07’ ‘00:00:11.366717’ ‘00:00:11.367594’ 在来自 CSV 文件的 pandas 中。我希望第二行与其他行保持一致。 ‘00:00:07.000000’

如果我运行: timestps.pd.to_datetime(timestps) 在 timestps 数据上,我确实得到了所有小数的格式,但它添加了一个日期,我似乎无法在不丢失时间格式的情况下删除它。任何帮助,将不胜感激。 谢谢

【问题讨论】:

标签: python pandas formatting timestamp


【解决方案1】:

您既可以使用datetime,也可以不使用代码中的年/月/日,或者转换为timedelta。两种类型可用的方法不同,因此选择取决于您要做什么...例如:

import pandas as pd
# example series:
s = pd.Series(['00:00:02.285932', '00:00:07', '00:00:11.366717', '00:00:11.367594'])

# cast string to datetime:
s_dt = pd.to_datetime(s)
### extract a certain attribute:
# s_dt.dt.second
# 0     2
# 1     7
# 2    11
# 3    11

### format to string for display:
# s_dt.dt.strftime('%H:%M:%S.%f')
# 0    00:00:02.285932
# 1    00:00:07.000000
# 2    00:00:11.366717
# 3    00:00:11.367594
# dtype: object

# cast string to timedelta:
s_td = pd.to_timedelta(s)
# s_td
# 0   00:00:02.285932
# 1          00:00:07
# 2   00:00:11.366717
# 3   00:00:11.367594
# dtype: timedelta64[ns]

### extract total seconds as float:
# s_td.dt.total_seconds()
# 0     2.285932
# 1     7.000000
# 2    11.366717
# 3    11.367594

【讨论】:

  • 感谢 Fuppes 先生,我正在处理其中一些示例,但是它们不会以完整的 15 个字符格式返回没有日期的时间格式:'00:00:07.000000'
  • @MichaelReilley:“15 个字符格式”是什么意思?如果您转换为 timedelta 或 datetime,则数据不再表示为字符(字符串)。如果在 timedelta 中没有显示微秒,那仅仅意味着它们为零。对于 datetime 对象,如果您想以某种格式显示它们,请使用 strftime(我添加了一个示例,请参阅代码中的 cmets)。
  • @MrFuppers 谢谢。 strftime('%H:%M:%S.%f') 解决了这个问题,但由于另一个原因之前没有工作。 strftime 的变体实际上甚至在更早的代码中也是如此!再次感谢!
猜你喜欢
  • 2017-03-31
  • 1970-01-01
  • 2014-08-31
  • 2021-07-03
  • 2020-09-05
  • 2022-10-09
  • 1970-01-01
  • 1970-01-01
  • 2016-01-29
相关资源
最近更新 更多