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



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

交易如下:

我有一个Excel格式的数据集,包含939019个气象站记录(行)。日期/时间间隔为每10分钟,从1993年1月29日16:30至2013年6月30日24:00。如果我计算一下,很明显有遗漏的行。

我需要知道遗漏的日期/时间。如果我能有一些小程序/脚本来返回丢失间隔的开始日期/时间和结束日期/时间,那将是很酷的。但我会很高兴有一份遗漏日期/时间的清单。

为了弄清楚,我想,哦,我只需要一个参考列表,将列表与遗漏的日期进行比较,并有某种方法标记或返回差距。

因此,在Excel中,我在气象站数据附近创建了一列,并在第一行填充了开始日期。随后的几行只为其上方的单元格增加了10分钟。不幸的是,在这20年的时间跨度中,10分钟的间隔数超出了excel的处理能力。不用担心。它变得足够近了(2013年1月6日10:50)。

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

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

然后我想——Python!这样就可以了,对吧?但我是一个地理信息系统的人。我只使用过Python示例脚本来运行地理处理工具(或者使用过ESRi的Model Builder)。我真的不知道从哪里开始。有指针吗?

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

我不知道这需要多长时间才能浏览大约3000万条记录,但我敢打赌,这将比通过Excel本身更快:)

祝你好运!

最新更新