首页 > 解决方案 > 如何处理熊猫列中的多个时间戳?

问题描述

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 

标签: pythonpandasdatetimestampformat

解决方案


由于带有格式的时间戳MM/dd/yyyy HH:mm:ss总是带有一个,PM或者AM您可以定义一个解析器函数,例如:

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')

推荐阅读