python - 在 Pandas 的低频 bin 中对高频数据进行计算
问题描述
我在熊猫数据框中有一些数据,这些数据在几个小时内具有每秒级别的条目。条目按日期时间格式索引为TIMESTAMP
. 我想在每分钟内对所有数据进行分组并进行一些计算和操作。也就是说,我想把 09:00:00 到 09:00:59 之间的所有数据都拿出来,报告一下这一分钟发生的事情。然后,我想从 09:01:00 到 09:01:59 等到我的数据集结束时进行相同的计算和操作。
我一直在摆弄groupby()
,.resample()
但到目前为止我还没有成功。我可以用一系列 for 循环和 if 语句想到一种非常不优雅的方法,但我想知道这里是否有更简单的方法。
解决方案
你没有提供任何数据或代码,所以我只是弥补一些。您也没有指定要执行的计算,所以我只是取平均值:
>>> import numpy as np
>>> import pandas as pd
>>> dates = pd.date_range("1/1/2020 00:00:00", "1/1/2020 03:00:00", freq="S")
>>> values = np.random.random(len(dates))
>>> df = pd.DataFrame({"dates": dates, "values": values})
>>> df.resample("1Min", on="dates").mean().reset_index()
dates values
0 2020-01-01 00:00:00 0.486985
1 2020-01-01 00:01:00 0.454880
2 2020-01-01 00:02:00 0.467397
3 2020-01-01 00:03:00 0.543838
4 2020-01-01 00:04:00 0.502764
.. ... ...
236 2020-01-01 03:56:00 0.478224
237 2020-01-01 03:57:00 0.460435
238 2020-01-01 03:58:00 0.508211
239 2020-01-01 03:59:00 0.415030
240 2020-01-01 04:00:00 0.050993
[241 rows x 2 columns]
推荐阅读
- reactjs - 在 github 命令行上运行 npm run deploy 时,“npm”未识别为内部或外部命令错误
- c# - 如何更新泛型类型的表达式值
- css - 垂直对齐 div 中的文本
- ios - 如何使用 SwiftUI 调整图像大小?
- java - 未能合并清单
- c# - 为什么文本框打印“3-”而不是“-3”?
- javascript - 使用 toLocaleDateString 在相同代码上的不同结果
- apache-spark - Spark xgboost4j 8300 标签得到 XGBoostModel 训练失败错误 bug 没有明显错误
- tomcat - 如何将流量从 localhost:8080 路由到 localhost:8080/myapp
- r - 我正在尝试对我的数据集进行层次聚类,我想在其中将债务人姓名聚类为 3 个类别