0

我正在尝试清理数据框中的某些列并将其从 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,相关的列也会被读取为 'object'。

4

1 回答 1

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
于 2017-07-26T13:55:33.340 回答