代码之家  ›  专栏  ›  技术社区  ›  Daniel Xin Li

Pandas datetime转换无法识别我的输入

  •  1
  • Daniel Xin Li  · 技术社区  · 7 年前

    我有一大组数据,其中日期和时间有单独的列。我想将它们转换为字符串,然后将它们转换为datetime。然而,这个值错误总是会弹出。

    ValueError: time data '200101030' does not match format '%Y%m%d%H%M%S' (match)
    

    以下是数据格式:

     <DTYYYYMMDD>  <TIME>  Adj. Open  Adj. High  Adj. Low  Adj. Close  volume
       20010102  230100     0.5617     0.5617    0.5617      0.5617       4
       20010102  230400     0.5616     0.5616    0.5616      0.5616       4
    

    代码如下:

    df=pd.read_csv('AUDUSD.txt')
    df['DATE']=df['<DTYYYYMMDD>'].map(str)+df['<TIME>'].map(str)
    df['DATE']=pd.to_datetime(df['DATE'],format="%Y%m%d%H%M%S")
    print(df.head(15))
    

    非常感谢您的帮助!!

    1 回复  |  直到 7 年前
        1
  •  1
  •   jezrael    7 年前

    列中存在一些错误数据问题 <TIME> zero .

    需要参数 errors='coerce' 用于将坏数据转换为 NaT :

    print (df)
       <DTYYYYMMDD>  <TIME>  Adj. Open  Adj. High  Adj. Low  Adj. Close  volume
    0      20010102  230100     0.5617     0.5617    0.5617      0.5617       4
    1      20010103       0     0.5616     0.5616    0.5616      0.5616       4
    
    
    df['DATE']=df['<DTYYYYMMDD>'].astype(str)+df['<TIME>'].astype(str)
    df['DATE']=pd.to_datetime(df['DATE'],format="%Y%m%d%H%M%S", errors='coerce')
    print (df)
       <DTYYYYMMDD>  <TIME>  Adj. Open  Adj. High  Adj. Low  Adj. Close  volume  \
    0      20010102  230100     0.5617     0.5617    0.5617      0.5617       4   
    1      20010103       0     0.5616     0.5616    0.5616      0.5616       4   
    
                     DATE  
    0 2001-01-02 23:01:00  
    1                 NaT