我有一个时间序列的每日降雨数据,如下所示: PRCPyear_month_day 1797-01-01 00:00:00 0.01797-01-02 00:00:00 0.01797-01-03 00:00:00 1.11797-01-04 00:00:00 0.01797-01-05 00:00:00 3.51797-02-01 00:00:00 8.11797-02-02 00:00:00 3.01797-02-03 00:00:00 0.01797-02-04 00:00:00 0.01797-02-05 00:00:00 0.01797-03-01 00:00:00 0.01797-03-02 00:00:00 0.01797-03-03 00:00:00 0.01797-03-04 00:00:00 0.01797-03-05 00:00:00 1.51797-04-01 00:00:00 6.31797-04-02 00:00:00 24.01797-04-03 00:00:00 0.01797-04-04 00:00:00 2.21797-04-05 00:00:00 5.91797-05-01 00:00:00 0.01797-05-02 00:00:00 15.91797-05-03 00:00:00 0.01797-05-04 00:00:00 0.01797-05-05 00:00:00 0.01797-06-01 00:00:00 1.61797-06-02 00:00:00 0.01797-06-03 00:00:00 0.01797-06-04 00:00:00 7.91797-06-05 00:00:00 0.0我已经能够将其索引列作为熊猫datetime对象导入。我正在尝试计算每个月的所有非零雨天。我可以按月分组:grouped = df.groupby(pd.Grouper(freq='M'))并可以通过以下方式每月计算所有内容:raindays = grouped.resample("M").count()但这也算是零降雨的日子。我发现了有关使用的提示nunique(),但似乎不适用于重采样。例如:raindays = grouped.resample("M").nunique()返回错误:AttributeError: 'DataFrameGroupBy' object has no attribute 'nunique'有没有一种方法可以对分组的熊猫对象中的非零值进行计数?
2 回答
德玛西亚99
TA贡献1770条经验 获得超3个赞
屏蔽那些0,然后重试。
df.mask(df.PRCP.eq(0)).groupby(pd.Grouper(freq='M')).count()
或者,使用更明显的版本replace。
df.replace({0 : np.nan}).groupby(pd.Grouper(freq='M')).count()
PRCP
year_month_day
1797-01-31 2
1797-02-28 2
1797-03-31 1
1797-04-30 4
1797-05-31 1
1797-06-30 2
达令说
TA贡献1821条经验 获得超6个赞
使用factorize和bincount
f, u = pd.factorize(df.index + pd.offsets.MonthEnd(0))
pd.Series(np.bincount(f, df.PRCP.values != 0).astype(int), u)
1797-01-31 2
1797-02-28 2
1797-03-31 1
1797-04-30 4
1797-05-31 1
1797-06-30 2
dtype: float64
添加回答
举报
0/150
提交
取消