微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 如何使用Pandas创建days_in_year函数?

我正在尝试使用Pandas创建一个简单的列,它将计算相邻日期列的年份中的天数.

我已经使用DatetimeIndex的daysinmonth属性相当容易地完成了本月的天数,具体如下:

def daysinmonth(row):
    x = pd.DatetimeIndex(row['Date']).daysinmonth
    return x  
daysinmonth(df)

如果没有漂亮的预定义属性,我很难模仿这一年的结果.

我的数据框看起来如下(因为我正在尝试创建,所以没有days_in_year列):

        Date       Days_in_month    Days_in_year
1       2/28/2018      28               365
2       4/14/2019      30               365
3       1/1/2020       31               366
4       2/15/2020      29               366

感谢任何看过的人!

解决方法:

获取年份模式4,等于0表示366,否则表示365(注意这不包括特殊情况,您可以检查更新功能和我提供的链接)

(pd.to_datetime(df.Date,format='%m/%d/%Y').dt.year%4).eq(0).map({True:366,False:365})
Out[642]: 
1    365
2    365
3    366
4    366
Name: Date, dtype: int64

您可以使用这个更准确的闰年,从这个site的定义

def daysinyear(x):
    if x%4==0 :
       if x%100==0:

            if x%400==0:
                return(366)
            else:
                return (365)
       else :
           return(365)
    else:
        return(365)


(pd.to_datetime(df.Date,format='%m/%d/%Y').dt.year%4).apply(daysinyear)
Out[656]: 
1    365
2    365
3    366
4    366
Name: Date, dtype: int64

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐