将时间数据转换为数组的值

时间:2016-09-26 18:49:42

标签: python date csv datetime

我正在为天文学应用编写基本模拟。我有一个.csv文件,它是一个观察列表。它有11列,其中第2,3,4,5列分别是十进制小时,日,月,年。其余的是名称,坐标等。每晚,每晚观察一次物体选择。

这些列中的每个条目对应于进行观察的时间。例如:22.583, 5, 1, 2015相当于2015年1月5日22:35(0.583分为35/60分钟)。整个文件“解析”为5分钟。

我还编写了一些以给定时间间隔生成数据的代码。

我想要的是一种解释4个时间和日期列的方法,这样我的时间戳就是“自t = 0以来有多少5分钟”的简单值。

这将导致单个时间 - 日期数组,对于前5个可能的观察,读取0,1,2,3,4 ....值得注意的是,在原始的csv文件中,数据不会占用每隔5分钟的间隔,因此存在不同长度的间隙。

最终,我希望能够在观察每个对象时有一个时间 - 日期值列表。

作为一个例子,我现在拥有的是(仅适用于第1,2,3,4,5栏):

star1, 0.250, 1, 1, 2015
star2, 0.583, 1, 1, 2015
star3, 0.916, 1, 1, 2015
star1, 0.250, 2, 1, 2015
star2, 0.583, 2, 1, 2015
star3, 0.916, 2, 1, 2015...

我想谈谈:

t_star1 = [3, 291,...]
t_star2 = [7, 295,...]
t_star3 = [11, 299,...]

这里我使用2015年1月1日00:00作为t = 0,所以00:05/1/1/2015是t = 1,依此类推,每5分钟一次。我的csv文件实际运行了10年,大约有70,000个条目。

这对于我来说很复杂的是,在时间栏中,小时/分钟以有趣的方式表达,并且每个月都有不同的天数。所以要找到某个东西的时间戳并不是一个简单的操作。

谢谢!

1 个答案:

答案 0 :(得分:2)

考虑使用标准datetime模块:https://docs.python.org/3.5/library/datetime.html

from datetime import datetime
hourminute = .25
day = 1
month = 1
year = 2015
datetime(year, month, day, int(hourminute//1), round(int((hourminute%1) * 60)))

然后datetime有许多方法可以在时间再现之间进行转换。