假设我有一个开始日期和结束日期,如下所示:
start_d = datetime.date(2017, 7, 20)
end_d = datetime.date(2017, 9, 10)
我希望获得一个如下所示的Pandas DataFrame:
Month NumDays
2017-07 12
2017-08 31
2017-09 10
它显示了我范围内每个月的天数.
到目前为止,我可以使用pd.date_range(start_d,end_d,freq =’MS’)生成每月系列.
解决方法:
您可以先使用date_range
作为默认的日频率,然后使用size
创建系列和resample
.最后通过to_period
转换为月周期:
start_d = pd.datetime(2017, 7, 20)
end_d = pd.datetime(2017, 9, 10)
s = pd.Series(index=pd.date_range(start_d, end_d))
df = s.resample('MS').size().rename_axis('Month').reset_index(name='NumDays')
df['Month'] = df['Month'].dt.to_period('m')
print (df)
Month NumDays
0 2017-07 12
1 2017-08 31
2 2017-09 10
感谢您07004简化解决方案:
df = s.resample('MS').size().to_period('m').rename_axis('Month').reset_index(name='NumDays')
标签:date-range,pandas,python 来源: https://codeday.me/bug/20191025/1930468.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。