python - 如何在时间戳上正确使用 group-by?
问题描述
我每分钟都有一整年的时间序列数据。
timestamp day hour min rainfall_rate
2010-01-01 00:00:00 1 0 0 x
2010-01-01 00:01:00 1 0 1 x
2010-01-01 00:02:00 1 0 2 x
2010-01-01 00:03:00 1 0 3 x
2010-01-01 00:04:00 1 0 4 x
... ...
2010-12-31 23:55:00 365 23 55
2010-12-31 23:56:00 365 23 56
2010-12-31 23:57:00 365 23 57
2010-12-31 23:58:00 365 23 58
2010-12-31 23:59:00 365 23 59
我想组合时间戳,这样我就可以得到rainfall_rate
每个月的组合,即我想group-by
根据日期将它们组合起来,并将它们与轴一起绘制为时间戳以供进一步分析。如何使用熊猫执行此操作?
我用了 -
daily_groups = rainfall_df.groupby(rainfall_df.index.date)
然后
daily_groups.get_group(pd.Timestamp(2010,1,1))['rainfall_rate'].sum()
但我当然无法绘制它们,因为它们的形状不同。
解决方案
pd.Grouper
与 一起使用freq="M"
:
print (df.groupby(pd.Grouper(freq="M"))["rainfall_rate"].count())
#
timestamp
2010-01-31 5
2010-02-28 0
2010-03-31 0
2010-04-30 0
2010-05-31 0
2010-06-30 0
2010-07-31 0
2010-08-31 0
2010-09-30 0
2010-10-31 0
2010-11-30 0
2010-12-31 0
推荐阅读
- objective-c - NSButton 在运行时不显示图像或文本
- php - 在 php:7.4-fpm 映像上安装 PHP-zip
- python - cursor.execute() 通过 python dbapi 2.0 生成的实际 SQL 是什么?
- typescript - pdf-lib - 确保文本保留在页面上(使用换行和缩小尺寸)
- typescript - 在泛型函数中按名称调用方法
- vb.net - 从 2.0 迁移时 .Net Standard 2.1 上的 VB.NET 库中断 - TryParse 上请求的操作不可用
- node.js - 在 nodejs 中执行下一次迭代之前等待 API 返回其响应
- flutter - InitState 在开始时未执行
- java - javafx中的线程
- sql - SQL - 根据 2 个日期之间的天数从 1 个记录创建多个记录