【问题标题】:pandas - retain timestamp format only for time (not date)pandas - 仅保留时间的时间戳格式(不是日期)
【发布时间】:2021-11-10 08:33:49
【问题描述】:

我正在使用 benedict python 库来解析.xml 文件(示例如下):

data_source = """
<?xml version="1.0" encoding="utf-8"?>
<RunInfo Version="5">
   <Run Id="210910_A00154_0856_BH2TTNDMXY" Number="856">
        <Date>9/10/2021 3:08:02 PM</Date>
   </Run>
</RunInfo>"""

最终我要解析的是时间戳格式的时间,但没有日期,即只有3:08:02 PM

鉴于此

type(data['RunInfo']['Run']['Date']) 导致str

我做了pd.to_datetime(data['RunInfo']['Run']['Date'])

但日期在那里,原因很明显。

所以我只对要解析的部分(3:08:02 PM)进行切片,然后将其转换为时间戳格式,使用pd.to_datetime(data['RunInfo']['Run']['Date'][-10:], format="%H:%M:%S")

但是发生的事情是pd.to_dateTime() 仍然输出一个日期,现在是一个随机日期,这更糟。

有谁知道我如何只解析原始.xml 文件中的时间?

【问题讨论】:

标签: python-3.x pandas xml timestamp


【解决方案1】:

我们可以像这样将9/10/2021 3:08:02 PM 转换为DataTime 格式:

>>> df['timestamp'] = pd.to_datetime(df['timestamp'])

然后,提取时间:

>>> df['timestamp'].dt.strftime("%I:%M:%S %p")

【讨论】:

  • pd.to_datetime 应该正确推断格式,我认为不需要明确指定它
  • 确实,我只是删除了它完美工作的格式,我更新了答案以简化它。谢谢@MrFuppes!
猜你喜欢
  • 1970-01-01
  • 2022-07-02
  • 1970-01-01
  • 1970-01-01
  • 2017-08-05
  • 1970-01-01
  • 2019-07-28
  • 2015-12-14
  • 2016-06-04
相关资源
最近更新 更多