我得到了下面的代码,它工作正常,但需要太多的时间来执行(> 30 s):
df['Date_engagement'] = np.nan
for i in range(df.shape[0]):
if not(pd.isna(df.loc[i,'Engagement'])):
df.loc[i, 'Date_engagement'] = np.busday_offset(
df.loc[i, 'Date_réception'].date(),
df.loc[i,'Engagement'], roll='backward', busdaycal=france_bdc
)
我想这是因为我循环了Pandas数据框,我想知道是否有一种方法可以实现相同的结果,而不使用任何循环。
基本上,此代码所做的是创建***'Date_engagement'列,如果'Engagement'不为空,则该列将是将'Engagement'天添加到'Date_reception'的结果。我使用'np.busday_offset()'***来避开节假日。
提前感谢您的帮助…
我尝试使用Pandas的 Dataframe 功能(如***DataFrame.apply()***),但无法找到如何正确地执行以获得与解释相同的结果。
3条答案
按热度按时间mznpcxlj1#
假设输入 Dataframe :
你可以向量化你的代码:
输出:
qvtsj1bj2#
也许这会起作用:
2cmtqfgy3#
虽然不是最有效的方法,但你可以试试:
示例:
输出: