将不完整日期列表与参考日期列表进行比较

时间:2013-12-20 04:20:22

标签: python excel xlrd xlwt xlutils

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

这是交易:

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

我需要知道缺少的日期/时间。如果我能有一些小程序/脚本返回缺失间隔的开始日期/时间和结束日期/时间,那将会很酷。但我会对缺少日期/时间的清单感到满意。

要弄明白,我想,哦,我只需要一个参考列表来比较列表和缺少日期,并有一些标记或返回差距的方法。

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

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

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

然后我想 - Python!那是做的,对吗?但我是一个GIS人员。我只使用过Python示例脚本来运行地理处理工具(或使用ESRi的模型构建器)。我真的不知道从哪里开始。有什么指针吗?

1 个答案:

答案 0 :(得分:2)

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

我不知道这需要多长时间才能完成约3000万条记录,但我愿意打赌它会比通过Excel本身更快地完成:)

祝你好运!