如何在Python Pandas DataFrame中计算日期的年内累计天数
在Pandas中计算日期的年内累计天数
针对你给出的DataFrame,要计算每个日期对应的年内累计天数,可以用以下两种高效方法实现:
方法一:使用内置的dt.dayofyear属性(推荐)
Pandas的datetime类型自带dayofyear属性,直接返回该日期在当年的累计天数,无需手动计算各月天数总和,效率最高:
import pandas as pd # 构造你的DataFrame df = pd.DataFrame({ 'Datetime': [ '2022-06-01 00:00:00', '2022-06-01 00:01:00', '2022-06-01 00:02:00', '2022-06-01 00:03:00', '2022-06-01 00:04:00', '2022-06-01 00:05:00' ] }) # 确保Datetime列为datetime类型(若原数据是字符串则执行这一步) df['Datetime'] = pd.to_datetime(df['Datetime']) # 新增年内累计天数列 df['Day_of_Year'] = df['Datetime'].dt.dayofyear
执行后,Day_of_Year列的值为152(2022年1-5月总天数151加1),符合你的需求,且时间部分不会影响结果。
方法二:手动计算日期差(适合理解逻辑)
如果想手动实现“当年1月1日到目标日期的天数差加1”的逻辑,可以这样写:
# 生成当年1月1日的时间戳 df['Year_Start'] = df['Datetime'].apply(lambda x: pd.Timestamp(year=x.year, month=1, day=1)) # 计算天数差并加1得到累计天数 df['Day_of_Year'] = (df['Datetime'] - df['Year_Start']).dt.days + 1
这种方法和方法一结果完全一致,适合需要自定义逻辑的场景。
内容的提问来源于stack exchange,提问作者user20737601
相关产品推荐
相关产品推荐

