猿问

熊猫datetime重采样计数为非零

我有一个时间序列的每日降雨数据,如下所示:


                     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

我已经能够将其索引列作为熊猫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'

有没有一种方法可以对分组的熊猫对象中的非零值进行计数?


米琪卡哇伊
浏览 139回答 2
2回答

德玛西亚99

屏蔽那些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()                PRCPyear_month_day      1797-01-31         21797-02-28         21797-03-31         11797-04-30         41797-05-31         11797-06-30         2

达令说

使用factorize和bincountf, u = pd.factorize(df.index + pd.offsets.MonthEnd(0))pd.Series(np.bincount(f, df.PRCP.values != 0).astype(int), u)1797-01-31    21797-02-28    21797-03-31    11797-04-30    41797-05-31    11797-06-30    2dtype: float64
随时随地看视频慕课网APP

相关分类

Python
我要回答