我有一个Pandas DataFrame,其中**“date”列包含datetime值,“months”**列包含整数值,表示要添加到每个日期的月数。我想为每行计算一个新日期,即原始“date”加上months列中指定的月数。
我使用下面的代码:
df['date'] + df["months"].apply(lambda y: pd.DateOffset(months=y))
这段代码似乎工作正常,但我收到一个PerformanceWarning,内容是:
PerformanceWarning: Adding/subtracting object-dtype array to DatetimeArray not vectorized
warnings.warn
我需要在数据集中使用多个日期和月份列来执行此过程,并且需要很长时间来执行此任务。
输入示例:
| | 日期|月|
| - ------|- ------|- ------|
| 无|2020年1月1日|三个|
| 1个|二〇二一年六月十五日|六个|
| 第二章|2022年2月28日|1个|
输出样本:
| | 日期|月|新日期|
| - ------|- ------|- ------|- ------|
| 无|2020年1月1日|三个|2020年4月1日|
| 1个|二〇二一年六月十五日|六个|二〇二一年十二月十五日|
| 第二章|2022年2月28日|1个|二○二二年三月二十八日|
这个警告是什么意思,我如何改进我的代码来避免它?我担心这可能会影响我的代码的性能,我想确保它尽可能的高效。
1条答案
按热度按时间vxqlmq5t1#
您可以通过在日期列上使用
.dt.date
来删除性能警告。要获得更快的性能,可以使用
dateutil.relativedelta
:打印(无性能警告):
快速基准测试:
图纸: