原表(或Dataframe)
<表类>
ID
开始结束 tbody><<tr>1 2020-09-01 2021-12-31 22019-07-01 2021-07-31 … … … 1000 2015-01-01 2016-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