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
@霍金,很高兴我能帮上忙:)