【发布时间】:2020-05-31 05:51:50
【问题描述】:
我是使用 VBA 在 Excel 工作表中组织一些数据的新手。如果这更容易的话,我也有一些 Python 经验。
我有一个来自模型的 .csv 文件,该文件输出不连续的时间序列(只要有流入,但不是每 1 分钟时间步长):
日期/时间排水 cm/BRA
5/10/14 11:00 0
5/10/14 11:01 1
5/10/14 11:02 2
5/10/14 11:03 2
5/10/14 11:04 1
5/11/14 7:00 1
5/11/14 7: 01 0
5/11/14 7:02 1
5/11/14 7:03 1
5/11/14 7:04 0
5/11/14 7:05 0
我想要的是能够将数据聚合到 2 分钟的时间步长。所以我得到了这个:
日期/时间排水厘米/胸罩
2014 年 5 月 10 日 11:00 1
14 年 5 月 10 日 11:02 4
14 年 5 月 10 日 11:04 1
5/10/14 11:06 0
5/10/14 11:08 0
...
...
5/11/14 6:58 0
5/11/14 7:00 1
5/11/14 7:02 2
5/ 11/14 7:04 0
只要我有一个连续的数据文件,我已经有一个代码可以为我汇总数据(在这个例子中,填补了 14 年 5 月 10 日 11:04 到 14 年 5 月 11 日 7:00 之间的空白)。正如您可以想象的那样,对于微小的数据,手动填充的空白太多了,更不用说我必须为超过 70 个输出文件重现这个。
关于创建连续时间序列或聚合到 2 分钟的任何建议,尽管时间序列中的间隙不均匀??
【问题讨论】:
-
到目前为止您尝试了哪些方法,遇到了哪些问题?
-
你可以试试曲线拟合算法。
-
使用 Pandas 似乎是合乎逻辑的(最简单的路线)。查看this question;可能会让你朝着正确的方向开始。首先,使用pandas.DataFrame.read_excel() 函数将您的数据读入pandas.DataFrame。
-
@braX 我尝试对每两列求和以进行聚合,但是在跳过步骤时这不起作用(例如 5/10/14 11:00 值和 5/11/14 7:00 值会添加为 2 分钟时间步 11:00-11:02) 的总数。接下来,我尝试使用 if 语句来验证前一个单元格实际上只有 2 分钟的差异,但是当我这样做时,它在 11:02 正确输出但跳过了 11:04(因为下一个单元格 7:00 是不是 2 分钟的步骤),然后从 7:01 开始,因为那是 11:04 以下的 2 个单元格。这行不通,因为现在所有时间步都以奇数而不是偶数结尾。
-
感谢@S3DEV。我会调查的。
标签: python python-3.x vba time-series aggregate