计算pandas数据框中的唯一日期

时间:2016-08-10 14:07:19

标签: python pandas

我有一个由台站标识符代码和日期组织的地面天气观测数据框(fzraHrObs)。 fzraHrObs有几列天气数据。站点代码和日期(日期时间对象)如下所示:

usaf      dat
716270    2014-11-23 12:00:00
          2015-12-20 08:00:00
          2015-12-20 09:00:00
          2015-12-21 04:00:00
          2015-12-28 03:00:00
716280    2015-12-19 08:00:00
          2015-12-19 08:00:00

我想得到每个电台每年唯一日期(天)的数量 - 即每个电台每年的天数。在上面的例子中,这会给我:

    usaf      Year     Count
    716270    2014     1
              2015     3
    716280    2014     0
              2015     1

我尝试过使用groupby并按电台,年份和日期进行分组: grouped = fzraHrObs['dat'].groupby(fzraHrObs['usaf'], fzraHrObs.dat.dt.year, fzraHrObs.dat.dt.date])

计算,尺寸,nunique等只是给我每个日期的数量,而不是每年的日期数量。有关获得我想要的东西的任何建议吗?

2 个答案:

答案 0 :(得分:2)

以下内容应该有效:

df.groupby(['usaf', df.dat.dt.year])['dat'].apply(lambda s: s.dt.date.nunique())

我做的不同之处仅在于分为两个级别,然后使用pandas系列的nunique方法计算每个组中唯一日期的数量。

答案 1 :(得分:1)

可能是这样的,按usafyear对日期进行分组,然后计算唯一值的数量:

import pandas as pd
df.dat.apply(lambda dt: dt.date()).groupby([df.usaf, df.dat.apply(lambda dt: dt.year)]).nunique()

#   usaf   dat 
# 716270  2014    1
#         2015    3
# 716280  2015    1
# Name: dat, dtype: int64