熊猫将无法从csv文件中识别datetimeindex

时间:2018-09-25 07:03:20

标签: python pandas csv datetime

我正在尝试将此两列文件读入数据框。它不显示为日期时间。

INPUT :
DATE    DTB3
8/4/2014    0.0004
8/5/2014    0.0003
8/6/2014    0.0003
........

使用此代码:

T1 = pd.read_csv(FRED_file,sep=',',header=None,names=['DATE','DTB3'],dtype= {'DATE':'str','DTB3':'str'},parse_dates=['DATE'],index_col='DATE')
T1.drop(T1.index[0],inplace=True)
T1.index = pd.to_datetime(T1.index, format = '%m/%d%Y')
T1.index = T1.index.strftime('%Y-%m-%d')
T1.index

输出:

Index(['2014-08-04', '2014-08-05', '2014-08-06', '2014-08-07', '2014-08-08',
       '2014-08-11', '2014-08-12', '2014-08-13', '2014-08-14', '2014-08-15',
           ...
       '2018-09-07', '2018-09-10', '2018-09-11', '2018-09-12', '2018-09-13',
       '2018-09-14', '2018-09-17', '2018-09-18', '2018-09-19', '2018-09-20'],
       dtype='object', length=1079)

2 个答案:

答案 0 :(得分:1)

好像您正在将索引转换为to_datetime行中的日期时间,然后使用strftime(字符串格式时间)将其转换回字符串。我认为,如果您删除该strftime行,则应该有一个日期时间索引

答案 1 :(得分:0)

为什么无法识别日期时间函数read_csv是参数header=None的原因-它将csv的第一行转换为数据(和索引)的第一行并转换为日期时间却失败了:

temp=u"""DATE,DTB3
8/4/2014,0.0004
8/5/2014,0.0003
8/6/2014,0.0003"""
#after testing replace 'pd.compat.StringIO(temp)' to FRED_file
T1 = pd.read_csv(pd.compat.StringIO(temp), 
                 header=None,
                 names=['DATE','DTB3'],
                 dtype= {'DTB3':'str'},
                 parse_dates=['DATE'],
                 index_col='DATE'
                 )

print (T1)
            DTB3
DATE            
DATE        DTB3
8/4/2014  0.0004
8/5/2014  0.0003
8/6/2014  0.0003

print (T1.index)

Index(['DATE', '8/4/2014', '8/5/2014', '8/6/2014'], dtype='object', name='DATE')

您可以省略参数headernames-因为文件包含csv标头sep-因为sep=','是默认参数,'DATE':'str'来自{{1} }-如果dtype的值将转换为/ s:

string