pandas数据帧中一个月的第一个和最后一个可用数据点

时间:2015-05-30 04:48:35

标签: python pandas

在每个月的开始和结束时,我需要在python中执行特定的计算。问题是我不能使用像:

这样的函数
def first_day_of_year(d):
    return date(d.year, 1)

由于我使用的数据帧一年中的每一天都没有数据点。那么我该如何调用一个月的第一个可用数据点呢?我怎么称呼最后一个?

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]