计算搁浅时间段数据集中输入的倍数



原表(或Dataframe)

<表类> ID 开始结束tbody><<tr>12020-09-012021-12-3122019-07-012021-07-31………10002015-01-012016-03-31

你可以试试

start = pd.to_datetime(df['List'], format='%Y')
end   = start + pd.offsets.YearEnd()
df['Days'] = (pd.concat([end-start, end-df['Start'],
df['End']-start, df['End']-df['Start']],
axis=1).min(axis=1)
+ pd.Timedelta(days=1))
print(df)
ID      Start        End  Start_y  End_y  List     Days
0     1 2020-09-01 2021-12-31     2020   2021  2020 122 days
1     1 2020-09-01 2021-12-31     2020   2021  2021 365 days
2     2 2019-07-01 2021-07-31     2019   2021  2019 184 days
3     2 2019-07-01 2021-07-31     2019   2021  2020 366 days # 2020 is leap year
4     2 2019-07-01 2021-07-31     2019   2021  2021 212 days
5  1000 2015-01-01 2016-03-31     2015   2016  2015 365 days
6  1000 2015-01-01 2016-03-31     2015   2016  2016  91 days

最新更新