迭代 df 行的有效方法

问题描述 投票:0回答:1

我正在尝试为数据框中的日期字段生成该月的最后一天: 所以有字段开始日期,我想添加 5 列,例如 nep_0,nep_1,nep_2,nep_3,nep_4 所以对于 nep_0 逻辑如下: 最后一天(保单开始日期+相对月份(0))

对于 nep_1: 最后一天(保单开始日期+相对月份(1))

正在使用这个:

date_after_month =pol_start_date + relativedelta(months=i)  nep_date=datetime.datetime(date_after_month.year,date_after_month.month,calendar.monthrange(date_after_month.year, date_after_month.month)[1])

但这用于迭代数据帧的每一行。我的数据框有 150 万行,这需要很多时间。你能告诉我一个更好的方法来实现同样的目标吗?可能正在使用应用或地图。

我还希望动态创建这些列 (nep_0,nep_1),就像不传递 0,1,2, 的相对月份参数一样。它们也应该被循环通过。

python dataframe memory-efficient
1个回答
0
投票

您可以使用:

from pandas.tseries.offsets import MonthEnd
cols=["nep_" + str(i) for i in range(month_count)]
for n,i in enumerate(cols):
    df[i] = df["dates"] + MonthEnd(n)
© www.soinside.com 2019 - 2024. All rights reserved.