2

我知道这是可能的。我知道有一个简单的解决方案,但我尝试过的一切都失败了。

这是交易:

我有一个 Excel 格式的数据集,其中包含 939,019 个气象站记录(行)。从 1993 年 1 月 29 日 16:30 到 2013 年 6 月 30 日 24:00,日期/时间间隔为每 10 分钟一次。如果我进行数学计算,很明显缺少行。

我需要知道丢失的日期/时间。如果我可以有一些小程序/脚本来返回丢失间隔的开始日期/时间和结束日期/时间,那就太酷了。但我会对丢失的日期/时间列表感到满意。

为了弄清楚,我想,哦,我所需要的只是一个参考列表,用于将列表与缺失的日期进行比较,并通过某种方式标记或返回差距。

因此,在 Excel 中,我在气象站数据旁边创建了一个列,并在第一行填充了开始日期。随后的行只是为其上方的单元格添加 10 分钟。不幸的是,在这 20 年的跨度中,10 分钟间隔的数量超过了 excel 可以处理的数量。不用担心。它足够接近(2013 年 1 月 6 日 10:50)。

无论如何,我在 excel 中尝试了 MATCH 函数,但这需要的时间太长了。在我打字的时间里,它已经达到了 3%(使用 12 个处理器)。我有 30 个气象站(日期范围相同)要做。我希望我能找到一种更快的方法来做到这一点。

所以,我接下来尝试了 Acess。我将文件(气象站数据和单独的参考日期列表)作为表导入 Access 中,并认为我只是做一个 UNMATCHED 查询,但出于某种原因(无论我如何格式化日期列(日期/时间、序列number), 查询返回几乎所有不匹配的行。不知道为什么,它确实很快,但它显然是错误的。

然后我想 - Python!这样就行了,对吧?但我是一个 GIS 人。我只使用过 Python 示例脚本来运行地理处理工具(或使用过 ESRi 的模型生成器)。我真的不知道从哪里开始。任何指针?

4

1 回答 1

2

首先,查看python-excel.orgxlrdxlwtxlutils模块和文档(我假设您正在处理.xls文件,而不是.xlsx- 如果是,请查看openpyxl)。安装它们后,通读文档以熟悉它们,它们不会太长或太复杂。实际比较应该不会太难:您需要做的就是读取单元格 N,将其值与单元格 N+1 进行比较,然后查看差异是否为 10 分钟。如果是,很好,请转到下一个值。如果没有,请将值打印到新工作簿(或任何您想做的事情 - 插入一个缺少时间的空白行并再次计算,或者您有什么)。

我不知道运行大约 3000 万条记录需要多长时间,但我敢打赌它会比通过 Excel 本身更快:)

祝你好运!

于 2013-12-20T04:41:30.790 回答