我有一个数据框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])
答案 0 :(得分:2)
指定format
或infer_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格式,而是采用常规格式