我使用以下格式的一些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
我错过了什么?
答案 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'))