Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将多个时间戳转换为datetime,对所有时间戳使用相同的格式?_Python_String Formatting_Python Datetime - Fatal编程技术网

Python 如何将多个时间戳转换为datetime,对所有时间戳使用相同的格式?

Python 如何将多个时间戳转换为datetime,对所有时间戳使用相同的格式?,python,string-formatting,python-datetime,Python,String Formatting,Python Datetime,我在看数据文件。数据始终具有某种形式的时间戳,这种时间戳在整个给定文件中是一致的,但格式因文件而异 给定的文件通常以01/02/17开头。很容易猜测这一年是最后一年,但它是DMY还是MDY?稍后的时间戳可能是27/02/17,这是明确的,我如何返回并确保01/02/17被解析为DMY,或者如果我后来发现01/31/17,如何解析为MDY 我试图对dateutil.parser进行包装,但找不到返回任何格式信息的方法(即使格式不明确,因此使用了默认顺序) 我尝试过的一些事情: (一) 在这里,我必

我在看数据文件。数据始终具有某种形式的时间戳,这种时间戳在整个给定文件中是一致的,但格式因文件而异

给定的文件通常以01/02/17开头。很容易猜测这一年是最后一年,但它是DMY还是MDY?稍后的时间戳可能是27/02/17,这是明确的,我如何返回并确保01/02/17被解析为DMY,或者如果我后来发现01/31/17,如何解析为MDY

我试图对dateutil.parser进行包装,但找不到返回任何格式信息的方法(即使格式不明确,因此使用了默认顺序)

我尝试过的一些事情: (一)

在这里,我必须在查看文件后手动更改每个文件的DATETIMEFORMAT

(二)

使用python的dateutil.parser,这将正确处理大多数时间戳,但我无法为所有文件设置默认顺序。当我遇到时,我正在努力获取格式信息

[https://stackoverflow.com/questions/53892450/get-the-format-in-dateutil-parse][1]

  • 两者的结合
  • 用于范围内的idx(df.shape[0]):
    tmpdate=parser.parse(df[DATETIME][idx])
    如果不明确(tmpdate):
    formatstr=get\u format\u str(df、tmpdate、idx)
    打破
    df[DATETIME]=pd.to_DATETIME(df[DATETIME],format=formatstr)
    

    在这里,我寻找一个明确的时间戳,并尝试使用它重新创建pd.to_datetime()的格式字符串。

    不幸的是,日期时间不明确,无法准确解析。从理论上讲,添加逻辑来执行健全性检查(检查月份是否高于12个月,等等)是可行的,尽管这并不可靠

    一个不错的选择是将特定文件映射到datetime格式,以便在解析时指定。例如:

    文件 格式 菲拉 年月日 文件 年月日 请阅读和介绍旅游。“告诉我如何解决这个编码问题”是。我们希望您做出一个明确的决定,然后就您的实施提出一个具体的问题。
    DATETIMEFORMAT = '%m/%d/%y %H:%M'
    df[DATETIME] = pd.to_datetime(df[DATETIME],format=DATETIMEFORMAT)
    
    datecol = []
    for idx in range(df.shape[0]):
      tmpdate = parser.parse(df[DATETIME][idx])
      datecol.append(pd.to_datetime(tmpdate))
    df[DATETIME] = datecol