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

时间:2017-10-10 11:47:16

标签: python pandas datetime datetime-conversion

我有这么大的数据集,其中日期和时间有不同的列。我想将它们转换为字符串,然后将它们转换为日期时间。但是,此值错误总是会弹出。

 <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))

以下是代码:

material2

非常感谢任何帮助!!

1 个答案:

答案 0 :(得分: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