我已经编写了一个函数,用于将Pandas日期时间转换为月末:
import pandas
import numpy
import datetime
from pandas.tseries.offsets import Day, MonthEnd
def get_month_end(d):
month_end = d - Day() + MonthEnd()
if month_end.month == d.month:
return month_end # 31/March + MonthEnd() returns 30/April
else:
print "Something went wrong while converting dates to EOM: " + d + " was converted to " + month_end
raise
这个函数看起来相当慢,我想知道是否有更快的替代方案?我注意到它很慢的原因是我在一个包含 50,000 个日期的数据帧列上运行它,而且我发现自从引入了这个函数后,代码运行速度要慢得多(之前我是将日期转换为月末)。
df = pandas.read_csv(inpath, na_values = nas, converters = {open_date: read_as_date})
df[open_date] = df[open_date].apply(get_month_end)
我不确定这是否相关,但我是按照以下方式读取日期的:
def read_as_date(x):
return datetime.datetime.strptime(x, fmt)
.values
? - AnneDatetimeIndex(['2012-12-31', '2012-12-31', '2013-02-28', '2013-02-28'], dtype='datetime64[ns]', name=u'date', freq=None)
。 - itzy