【问题标题】:parse date-time while reading 'csv' file with pandas使用 pandas 读取“csv”文件时解析日期时间
【发布时间】:2016-12-15 10:29:15
【问题描述】:

我在从 cvs 文件中读取数据时尝试解析日期。我使用的命令是

df  = pd.read_csv('/Users/n....', names=names, parse_dates=['date'])​ ) 

它一般都在处理我的文件。 但是我有几个数据集,它们的日期格式多种多样。我的意思是它的日期格式类似于(09/20/15 09:59​ ),而其他行的另一种格式类似于同一文件中的( 2015-09-20 10:22:01.013​ )。而且我上面写的命令不适用于这些文件。当我删除 (parse_dates=['date'])​时它正在工作,但那时我不能使用日期列作为 datetime 格式,它将该列读取为 integer 。如果有人能回答这个问题,我将不胜感激!

【问题讨论】:

  • 尝试这样做:df = pd.read_csv('/Users/n....', names=names); df['date'] = pd.to_datetime(df['date'])

标签: python date csv pandas


【解决方案1】:

像这样:

df = pd.read_csv(file, names=names)
df['date'] = pd.to_datetime(df['date'])

【讨论】:

    【解决方案2】:

    Pandas read_csv 接受 date_parser 参数,您可以定义自己的日期解析函数。因此,例如,在您的情况下,您可以简单地执行 2 种不同的日期时间格式:

    import datetime
    
    def date_parser(d):
        try:
            d = datetime.datetime.strptime("format 1")
        except ValueError:
            try:
                d = datetime.datetime.strptime("format 2")
            except:
                # both formats not match, do something about it
        return d
    
    df = pd.read_csv('/Users/n....', 
                     names=names, 
                     parse_dates=['date1', 'date2']),
                     date_parser=date_parser) 
    

    然后,您可以在这些列中以不同格式解析这些日期。

    【讨论】:

      猜你喜欢
      • 2021-06-14
      • 2017-02-18
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 2016-10-07
      • 2021-09-02
      • 2018-02-28
      • 1970-01-01
      相关资源
      最近更新 更多