我有一个包含两列的数据框,为了简单起见,我省略了另一个变量的年份和月份。它看起来像这样:
YearOfSRC MonthNumberOfSRC
0 2022 3
1 2022 4
2 2022 5
3 2022 6
4 2021 4
... ... ...
20528 2022 1
20529 2022 2
20530 2022 3
20531 2022 4
20532 2022 5
我想创建一个名为的新专栏PredictionDate
包含该年该月的第 7 个工作日的日期,格式为YYYY-MM-DD
。看来我可以做类似的事情this https://stackoverflow.com/questions/48809968/pandas-get-third-business-day-of-month,但我不确定如何在数据框中实现不同列中的月份和年份。我确信这将涉及apply
and/or groupby
但同样,不知道如何处理。我是否需要首先创建一个包含月份和年份的辅助列,然后使用它来生成所需的输出列?
EDIT给出的解决方案确实有效。然而,我意识到有些月份的第 7 个工作日会被该月第一周的假期所抵消,例如新年和 7 月 4 日。因此,我发布了一个新问题,寻求如何将这一事实纳入解决方案中here https://stackoverflow.com/questions/48809968/pandas-get-third-business-day-of-month.
如果我理解正确的话,你可以使用pandas.to_datetime https://pandas.pydata.org/docs/reference/api/pandas.to_datetime.html转换为日期时间,然后pandas.offsets.BusinessDay https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.tseries.offsets.BusinessDay.html获取您的工作日:
df['PredictionDate'] = (pd
.to_datetime(df[['YearOfSRC', 'MonthNumberOfSRC']]
.set_axis(['year' ,'month'], axis=1)
.assign(day=1)
)
.sub(pd.offsets.BusinessDay(1))
.add(pd.offsets.BusinessDay(7))
)
output:
YearOfSRC MonthNumberOfSRC PredictionDate
0 2022 3 2022-03-09
1 2022 4 2022-04-11
2 2022 5 2022-05-10
3 2022 6 2022-06-09
4 2021 4 2021-04-09
20528 2022 1 2022-01-11
20529 2022 2 2022-02-09
20530 2022 3 2022-03-09
20531 2022 4 2022-04-11
20532 2022 5 2022-05-10
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)