【发布时间】:2018-06-22 18:10:45
【问题描述】:
我有一个时间序列的每日降雨数据,如下所示:
PRCP
year_month_day
1797-01-01 00:00:00 0.0
1797-01-02 00:00:00 0.0
1797-01-03 00:00:00 1.1
1797-01-04 00:00:00 0.0
1797-01-05 00:00:00 3.5
1797-02-01 00:00:00 8.1
1797-02-02 00:00:00 3.0
1797-02-03 00:00:00 0.0
1797-02-04 00:00:00 0.0
1797-02-05 00:00:00 0.0
1797-03-01 00:00:00 0.0
1797-03-02 00:00:00 0.0
1797-03-03 00:00:00 0.0
1797-03-04 00:00:00 0.0
1797-03-05 00:00:00 1.5
1797-04-01 00:00:00 6.3
1797-04-02 00:00:00 24.0
1797-04-03 00:00:00 0.0
1797-04-04 00:00:00 2.2
1797-04-05 00:00:00 5.9
1797-05-01 00:00:00 0.0
1797-05-02 00:00:00 15.9
1797-05-03 00:00:00 0.0
1797-05-04 00:00:00 0.0
1797-05-05 00:00:00 0.0
1797-06-01 00:00:00 1.6
1797-06-02 00:00:00 0.0
1797-06-03 00:00:00 0.0
1797-06-04 00:00:00 7.9
1797-06-05 00:00:00 0.0
我已经能够将它与索引列一起作为 pandas 日期时间对象导入。我正在尝试计算每月所有非零雨天。我可以按月分组:
grouped = df.groupby(pd.Grouper(freq='M'))
并且可以通过以下方式计算每个月的所有内容:
raindays = grouped.resample("M").count()
但这也计算降雨量为 0 的天数。我发现了有关使用nunique() 的提示,但它似乎不适用于重采样。例如:
raindays = grouped.resample("M").nunique()
返回错误:
AttributeError: 'DataFrameGroupBy' object has no attribute 'nunique'
有没有办法计算分组熊猫对象中的非零值?
【问题讨论】:
-
df.resample('M').apply(lambda sdf: sdf.PRCP.ne(0).sum())也应该可以工作。但我相信,首先屏蔽往往会更快。