首页 > 解决方案 > 计算从年/月开始到今天的天数

问题描述

假设我们有一个数据框(df):

opendate
2020-08-04
2018-06-24
2011-03-17
2019-11-20

我想做两件事:

  1. 对于每个日期,计算从特定年份开始到该日期的天数
  2. 对于每个日期,计算从特定月份开始到该日期的天数

在 R 中,我可以通过以下代码执行此操作:

Year_Month_Diff <- function(x, start) as.numeric(x - as.Date(cut(start, "year")));
df = transform(df, Year_day_played = Year_Month_Diff(opendate, opendate));

Month_Diff <- function(x, start) as.numeric(x - as.Date(cut(start, "month")));
df= transform(df, Month_day_played = Month_Diff(opendate, opendate));

任何对 python 等价物的帮助将不胜感激。

标签: pythonrpandasdate

解决方案


月份真的很简单,只要打电话.dt.day

对于年份的情况,您从同年的 1 月 1 日减去日期,然后计算天数。

假设opendate已经是类型Timestamp

df['Days since BOM'] = df['opendate'].dt.day
df['Days since BOY'] = (df['opendate'] - (df['opendate'] - pd.tseries.offsets.YearBegin())).dt.days

感谢@ChrisA,对于 year 案例有一个更简单的解决方案:

df['Days since BOY'] = df['opendate'].dt.dayofyear 

推荐阅读