【问题标题】:How to handle multiple timestamps in a pandas column?如何处理熊猫列中的多个时间戳?
【发布时间】:2020-12-15 23:31:21
【问题描述】:

TS 列有两个时间戳,我不知道哪个时间戳会出现

08/06/2020 11:52:07 PM  # this is MM/dd/yyyy HH:mm:ss 


07/08/2020 0:31:17  # this is dd/MM/yyyy HH:mm:ss 

【问题讨论】:

  • MM/dd/yyyy HH:mm:ss 时间戳是否总是有PM
  • 是的。它总是有上午或下午

标签: python pandas date timestamp format


【解决方案1】:

由于格式为MM/dd/yyyy HH:mm:ss 的时间戳总是带有PMAM,您可以定义如下解析器函数:

import pandas as pd

def parse_dt(sdt):
    if 'AM' in sdt or 'PM' in sdt:
        return pd.to_datetime(sdt)
    else:
        return pd.to_datetime(sdt , dayfirst=True)

注意,您也可以使用lambda 定义它以直接用于例如read_csv

lambda dt: pd.to_datetime(sdt) if 'AM' in dt or 'PM' in dt else pd.to_datetime(sdt , dayfirst=True)

测试你的例子给出了

>>> parse_dt('08/06/2020 11:52:07 PM')
Timestamp('2020-08-06 23:52:07')
>>> parse_dt('07/08/2020 0:31:17')
Timestamp('2020-08-07 00:31:17')

【讨论】:

  • 成功了。现在我只需要在数据框上使用 apply 函数。
  • @AnimeshKansal,我不知道你的df 是什么样子,但你可以做类似df['dt colum'] = df['dt colum'].apply(lambda dt: pd.to_datetime(sdt) if 'AM' in dt or 'PM' in dt else pd.to_datetime(sdt , dayfirst=True)) 的事情。
  • 是的,我做到了。非常感谢斯特凡
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-16
  • 1970-01-01
  • 2017-07-16
  • 2021-10-16
  • 2022-10-08
  • 2019-06-08
相关资源
最近更新 更多