如何将熊猫列转换为日期时间

时间:2018-09-12 14:15:25

标签: python pandas performance datetime series

我有一个数据框var s = "hello"; var k = 322424; var i,l = s.length; var t = ''; // Note the `& 0xff` that keep the result within a byte range for(i=0 ; i<l ; i++) t += String.fromCharCode((s.charCodeAt(i) - k) & 0xff); // 't' is the result, let see its char codes var u = ''; for(i=0 ; i<l ; i++) u += t.charCodeAt(i) + ' '; console.log(u); // 240 237 244 244 247 (same as in C, 240-256 = -16 ...)

df

我想将列df date 0 05/01/2017 1 04/01/2017 2 08/01/2017 3 03/01/2017 4 10/01/2017 date转换为str

我正在做以下事情

datetime

但是要花无限的时间,如果我尝试

df['date'] = pd.to_datetime(df['date'])

我收到以下错误

pd.to_datetime(df['date'][0])

2 个答案:

答案 0 :(得分:2)

指定formatinfer_datetime_format可以显着提高性能:

df = pd.concat([df]*10000)

%timeit pd.to_datetime(df['date'])                              # 12.5 s per loop
%timeit pd.to_datetime(df['date'], format='%m/%d/%Y')           # 252 ms per loop
%timeit pd.to_datetime(df['date'], infer_datetime_format=True)  # 228 ms per loop

预先告诉熊猫您所期望的通常是提高性能的一种好方法。因此,如果您正在从输入文件中读取内容,那么这个想法也将适用于pd.read_csv

您的错误很可能是由于数据不正确造成的。如果您希望返回NaT的不可转换值,请指定errors='coerce'

pd.to_datetime(df['date'], format='%m/%d/%Y', errors='coerce')

答案 1 :(得分:0)

尝试以下代码:

df['date'] = pd.to_datetime(df['date'],infer_datetime_format=True)

从pandas官方文档中,传递infer_datetime_format = True通常可以加快解析速度,前提是它并非完全是ISO8601格式,而是采用常规格式