2017-10-10 25 views
1

日付と時刻に別々の列がある大きなデータセットがあります。私はそれらを文字列に変換し、その後それらを日時に変換したい。ただし、この値のエラーは常にポップアップします。ここPandasの日時変換で入力が認識されない

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 
関連する問題