Python 我怎样才能加快这个程序?
我正在尝试清理数据帧中的某些列,并将其从dtype“object”转换为dtype“datetime”:Python 我怎样才能加快这个程序?,python,pandas,string-to-datetime,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\u csv打开的,即
column_names = ['col a','col b', ...'col n']
df[column_names] = df[column_names].apply(pd.to_datetime, format = '%m/%Y')
但这似乎需要很长的时间——现在我只清理一个大得多的文件的子集
有没有更快的方法来实现这一点
我注意到这个文件是通过pd.read\u csv打开的,即使“parse\u dates”设置为True,相关列也会被读取为“object”。对我来说,它工作得非常好:
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
日期的格式是什么?不确定命令行“parse_dates=[0,1]”的作用是什么?您的第二个建议几乎肯定会花费我的代码所花费的时间……除非我遗漏了什么。它选择第一列和第二列,然后尝试转换为datetime