【发布时间】:2020-12-10 22:01:27
【问题描述】:
我有一个数据框 (df),其中有一列日期时间格式为 YYYY-MM-DD(“日期”)。我正在尝试创建一个新列来返回保单年度,该保单年度始终从 4 月 1 日开始,因此 1 月至 3 月的保单年度将始终是前一个日历年。有些日期相当陈旧,因此为下面的样本量设置单独的日期范围并不理想
数据框看起来像这样
df['date']
2020-12-10
2021-02-10
2019-03-31
输出应该是这样的
2020
2020
2018
我现在知道如何使用df['date'].dt.year 获取年份。但是,我无法将数据框每年转换为相应的保单年度,以便 if df['date'].dt.month >= 4 然后 df['date'].dt.year, else df['date'].dt.year - 1
我不太确定如何准确设置它。我一直在尝试避免设置多个列来为 month >= 4 执行 bool,然后设置不同的列。我已经设置了这个但是得到 ValueError 说明这个系列太模棱两可了
def PolYear(x):
y = x.dt.month
if y >= 4:
x.dt.year
else:
x.dt.year - 1
df['Pol_Year'] = PolYear(df['date'])
我不确定这是否是正确的方法,因此我还尝试了 >= 和
我之前提到过“会计年度”,但这是不正确的。
【问题讨论】: