gpt4 book ai didi

python - 前一年和明年的天数 - Pandas

转载 作者:行者123 更新时间:2023-12-02 16:37:20 25 4
gpt4 key购买 nike

我有一个如下所示的数据框

df1 = pd.DataFrame({'person_id': [11, 21, 31, 41, 51],
'date_1': ['12/30/1961', '05/29/1967', '02/03/1957', '7/27/1959', '01/13/1971'],
'date_2': ['07/23/2017','05/29/2017','02/03/2015',np.nan,np.nan]})
df1 = df1.melt('person_id', value_name='dates')

我想得到上一年和下一年的天数

我可以使用下面的代码获取上一年和下一年

df1['cur_year'] = pd.DatetimeIndex(df1['dates']).year
df1['prev_year'] = (df1['cur_year'] - 1)
df1['next_year'] = (df1['cur_year'] + 1)

如您所见,每一行的 year 值都在不断变化,而且我没有固定的基准日期,我如何计算与 31 这样的日期的天数差异/12 表示上一年,01/01 表示下一年。

请注意,获取天数时不包括结束日期

我在下面展示了 2 个主题的示例输出。

enter image description here

更新截图

u

最佳答案

据我了解,你可以试试;

df1['dates'] = pd.to_datetime(df1['dates'])
out = df1.assign(prev_yr_days=df1['dates'].dt.dayofyear,
next_yr_days=((df1['dates'] + pd.offsets.YearEnd(0)) - df1['dates']).dt.days.add(1))

   person_id variable      dates  prev_yr_days  next_yr_days
0 11 date_1 1961-12-30 364.0 2.0
5 11 date_2 2017-07-23 204.0 162.0
1 21 date_1 1967-05-29 149.0 217.0
6 21 date_2 2017-05-29 149.0 217.0
2 31 date_1 1957-02-03 34.0 332.0
7 31 date_2 2015-02-03 34.0 332.0
3 41 date_1 1959-07-27 208.0 158.0
8 41 date_2 NaT NaN NaN
4 51 date_1 1971-01-13 13.0 353.0
9 51 date_2 NaT NaN NaN

关于python - 前一年和明年的天数 - Pandas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62432928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com