我正在尝试清理并将数据框中的某些列从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,相关列也会被读作'对象'。
答案 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