我有一个由气象站标识符代码和日期组织的地面天气观测数据框 (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 等仅给出每个日期的 obs 数量,而不是每年的日期本身数量。关于在这里获得我想要的东西有什么建议吗?
最佳答案
可能是这样的,按 usaf
和 year
对日期进行分组,然后计算唯一值的数量:
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
关于python - 计算 pandas 数据框中的唯一日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38875752/