提高熊猫中日期时间操作的性能



我有一个大数据集,我需要对操作进行日期处理,由于花费的时间太长,我想知道是否有其他方法可以提高速度。数据框如下所示:

Date, Month
2017-01-01, 0
2017-01-01, 1
2017-01-01, 2

我需要创建另一列,将月份列添加到日期列,因此它如下所示:

Date, Month, newDate
2017-01-01, 0, 2017-01-01
2017-01-01, 1, 2017-02-01
2017-01-01, 2, 2017-03-01

我目前的方法使用应用函数和相对增量方法,例如:

def newDateCalc(self, row):
return row[0] + relativedelta(months = row[1])

df['newDate'] = df[['Date', 'Month']].apply(lambda row: newDateCalc(row), axis = 1)

提前感谢您的帮助,

这是我的矢量化尝试:

df['newDate'] = (df.Date.values.astype('M8[M]') + 
df.Month.values * np.timedelta64(1, 'M')).astype('M8[D]')

结果:

In [106]: df
Out[106]:
Date  Month    newDate
0 2017-01-01      0 2017-01-01
1 2017-01-01      1 2017-02-01
2 2017-01-01      2 2017-03-01

您可以将df.transformrelativedelta一起使用:

In [960]: df.transform(lambda x: x['Date'] + relativedelta(months=x['Month']), axis=1)
Out[960]: 
0   2017-01-01
1   2017-02-01
2   2017-03-01
dtype: datetime64[ns]

最新更新