解析日期和时间形成csv文件

时间:2016-07-20 17:35:22

标签: python datetime pandas

我使用以下格式的一些csv文件:

330913;23;2;2013;0;0;6;8;7
330914;23;2;2013;0;5;25;8;7
330915;23;2;2013;0;10;11;8;7
330916;23;2;2013;0;15;30;8;7
330917;23;2;2013;0;20;17;8;7
330918;23;2;2013;0;25;4;8;7

我将它们读入pandas DataFrame并需要指定一个列(例如)'dt'及其日期和时间。到目前为止,我最好的尝试如下:

df = pd.read_csv( './cucu.csv', sep=';', \
    header=None, dtype='str' )
df[ 'dt' ] = pd.to_datetime(\
    df[3]+df[2]+df[1]+df[4]+df[5]+df[6], \
    format='%Y%m%d%H%M%S')

我的问题是,如何在不处理字符串的情况下这样做?我很确定我过去使用类似的方式完成了这项工作:

df = pd.read_csv( './cucu.csv', sep=';', header=None, \
    parse_dates={'dt': [3,2,1,4,5,6]} )

但它现在无法正常工作:我得到一个dt列,其中包含2013 2 23 0 0 6

等字符串

我错过了什么?

1 个答案:

答案 0 :(得分:2)

查看read_csv方法。具体来说,date_parser kwarg就是你要找的。它采用由parse_date列创建的结果字符串并对其进行处理。

df = pd.read_csv('./cucu.csv', sep=';', header=None, parse_dates={'dt': [3,2,1,4,5,6]}, date_parser=lambda dts: pd.to_datetime(dts, format='%Y %m %d %H %M %S'))