Python 提高pandas中Datetime操作的性能

Python 提高pandas中Datetime操作的性能,python,dataframe,apply,Python,Dataframe,Apply,我有一个大数据集,我需要确定操作的日期,因为它花费的时间太长,我想知道是否有其他方法来提高速度。数据框如下所示: 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 我需要创建另一个列,将月份列添加到日期列,因此它看起来如下所示: Date,

我有一个大数据集,我需要确定操作的日期,因为它花费的时间太长,我想知道是否有其他方法来提高速度。数据框如下所示:

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
我需要创建另一个列,将月份列添加到日期列,因此它看起来如下所示:

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
我当前的方法是使用apply函数和relativedelta方法,如:

def newDateCalc(self, row):
return row[0] + relativedelta(months = row[1])
df['newDate']=df['Date',Month']]。应用(lambda行:newDateCalc(行),axis=1)


提前感谢您的帮助,

您可以使用
df.transform
relativedelta

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]

以下是我的矢量化尝试:

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

@霍金,很高兴我能帮上忙:)