2017-10-10 154 views
1

我有这么大的一组数据,其中日期和时间有单独的列。我想将它们转换为字符串,然后将它们转换为日期时间。但是,此值错误总是弹出。熊猫日期时间转换无法识别我的输入

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

有问题的一些不良数据 - 在列<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