在每个月的开始和结束时,我需要在python中执行特定的计算。问题是我不能使用像:
这样的函数def first_day_of_year(d):
return date(d.year, 1)
由于我使用的数据帧一年中的每一天都没有数据点。那么我该如何调用一个月的第一个可用数据点呢?我怎么称呼最后一个?
答案 0 :(得分:1)
假设您有datetime
个对象的列表,并且您希望按.month
属性对它们进行分组。所以,首先你需要对它们进行排序,然后你可以应用itertools.groupby()
函数返回:组值和迭代器。
import itertools
#Your datetime objects
dates = []
dates.sort()
groups = itertools.groupby(time_obj_dates, key = lambda x:x.month)
for mon, dates in groups:
for date in dates:
print mon, ("-".join(map(str,[date.year, date.month, date.day])))
>>> 1 1980-1-1
1 1980-1-2
1 1980-1-3
1 1980-1-4
1 1980-1-7
因此,您从输出中看到我们根据月份对日期进行分组。我们已经对列表进行了排序,为了获得开始日期,我们选择组中的第一个元素,并且对于最后一个日期,我们选择该组的结束元素。
要访问给定组的开始和结束日期,您可以使用:
for mon,dates in groups:
list_dates = list(dates)
print mon, list_dates[0], list_dates[-1]