[英]Count unique dates in pandas dataframe
我有一个按台站标识符代码和日期组织的地面天气观测( fzraHrObs
)数据fzraHrObs
。 fzraHrObs
具有几列天气数据。 站点代码和日期(datetime对象)如下所示:
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
我想获得每个站点每年唯一日期(天)的数量的计数,即每个站点每年obs的天数。 在上面的示例中,这将给我:
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])
: grouped = fzraHrObs['dat'].groupby(fzraHrObs['usaf'], fzraHrObs.dat.dt.year, fzraHrObs.dat.dt.date])
计数,大小,唯一性等等都给了我每个日期的obs数,而不是每年的日期数。 在这里得到我想要的任何建议吗?
可能是这样,将日期按usaf
和year
usaf
,然后计算唯一值的数量:
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
以下应该工作:
df.groupby(['usaf', df.dat.dt.year])['dat'].apply(lambda s: s.dt.date.nunique())
我做的不同的是仅按两个级别进行分组,然后使用pandas系列的nunique
方法计算每个组中唯一日期的数量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.