查找一年中的总天数(熊猫)

Sun*_*oiz 10 python-3.x pandas

有没有办法计算 Pandas 中 YYYY-MM-DD 日期时间格式的一年中的总天数?我已经探索过 dt.dayofyear 但这个函数似乎提供了从年初到我的日期时间变量的天数。

举个例子,如果我的日期是 2020-03-30,我应该知道今年是 2020 年,有 366 天(闰年)。如果是 2019-03-30,则应返回 365 天(非闰年)。

尝试搜索 pandas dt 文档,但似乎找不到任何内容。

谢谢。

too*_*mas 14

import datetime
import calendar
    
def days_in_year(year=datetime.datetime.now().year):
    return 365 + calendar.isleap(year)
Run Code Online (Sandbox Code Playgroud)


小智 9

year = 2021
pd.Timestamp(year, 12, 31).dayofyear
Run Code Online (Sandbox Code Playgroud)


小智 5

您还可以使用日历模块,如下所示:

import datetime as dt
import calendar
date=dt.datetime.strptime('2020-03-30', '%Y-%m-%d')
year=date.year
days=366 if calendar.isleap(year) else 365
Run Code Online (Sandbox Code Playgroud)


Ber*_*sen 1

我不确定是否有一个函数可以计算给定年份作为输入的天数

我将用它来计算任何一年的天数:

year=2020
number_of_days = sum([pd.Period(f'{year}-{i}-1').daysinmonth for i in range(1,13)])
Run Code Online (Sandbox Code Playgroud)

但您也可以使用 pd.Period 并检查闰年

import pandas as pd
p = pd.Period('2020-03-30')
if p.is_leap_year:
   days = 366
else:
   days = 365
print(days)
Run Code Online (Sandbox Code Playgroud)

两者都会在 2020 年输出:

366
Run Code Online (Sandbox Code Playgroud)