我有一些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
的字符串
我错过了什么?
检查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'))