我正在尝试使用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] 举报,一经查实,本站将立刻删除。