如何加快这个程序?

时间:2017-07-26 13:52:36

标签: python pandas string-to-datetime

我正在尝试清理并将数据框中的某些列从dtype'object'转换为dtype'datetime':

column_names = ['col a','col b', ...'col n']
df[column_names] = df[column_names].apply(pd.to_datetime, format = '%m/%Y')

但这似乎需要很长时间 - 而现在我只是清理了一个更大文件的子集。

有更快的方法来实现这一目标吗?

我注意到这个文件是通过pd.read_csv打开的,即使'parse_dates'设置为True,相关列也会被读作'对象'。

1 个答案:

答案 0 :(得分:0)

对我而言,它完美无缺:

import pandas as pd
from pandas.compat import StringIO

temp=u"""a;b;c
2/2015;4/2016;4"""
#after testing replace 'StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp), sep=";", parse_dates=[0,1])

print (df)
           a          b  c
0 2015-02-01 2016-04-01  4

print (df.dtypes)
a    datetime64[ns]
b    datetime64[ns]
c             int64
dtype: object

您还可以定义自定义解析器:

parser = lambda x: pd.to_datetime(x, format='%m/%Y', errors='coerce')
df = pd.read_csv(StringIO(temp), sep=";", parse_dates=[0,1], date_parser=parser)

print (df)
           a          b  c
0 2015-02-01 2016-04-01  4

print (df.dtypes)
a    datetime64[ns]
b    datetime64[ns]
c             int64
dtype: object