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

2024-09-27 19:24:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

我想要的是一种解释4个time和date列的方法,这样我就有了一个timestamp,它是一个简单的值‘t=0之后有多少5分钟’

这将导致单个时间日期数组读取0、1、2、3、4。。。对于前5个可能的观察。这里值得注意的是,在原始的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年,有大约70000个条目

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

谢谢


Tags: 文件csv数据代码名称列表间隔时间
1条回答
网友
1楼 · 发布于 2024-09-27 19:24:07

考虑使用标准的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有一系列的方法在时间重现之间进行转换

相关问题 更多 >

    热门问题