【发布时间】:2019-06-17 18:49:21
【问题描述】:
我正在尝试调用spice.str2et(n[i]) 获取日期列表(称为UTC,我从excel 导入)。我可以得到spice.str2et(n[i]),但每次循环它都会替换之前计算的时间。相反,我需要将所有spice.str2et(n[i]) 结果放在索引列表中。 (我也是 Python/编码的新手,刚开始 3 周前。)
我尝试在 et = 中的 et 之后添加 [i]。我还在这里查看了如何从枚举列表中获取索引,但它们都描述了如何从原始列表中获取索引。我正在寻找一个新的索引列表。
import spiceypy as spice
n = UTC.iloc[:,0]
for i, txt in enumerate(n):
et = spice.str2et(n[i]) #calculates ephermis time for utc,
print(et)
然后这给了我我想要的所有 ET 的列表,因为它每次循环时都会覆盖(当你打印不缩进时,它只会给出最后一个值)。
【问题讨论】:
-
看起来你可能只想要一个列表理解。类似
newList = [spice.str2et(txt) for txt in n] -
99.99% 的用户不知道 ephemeris time (ET) 是什么,因此请编辑问题的链接来解释它。底线是,(如何/)计算它与任何其他类型的时间不同?请不要指望每个用户都会自己去谷歌。但是,如果您只是说“我正在尝试在日期时间列表上调用
spice.str2et()”,那么就直接这么说,我们甚至根本不需要提及星历时间。此外,import spice也不见了。 -
欢迎您。仅供参考,这个包甚至没有被称为香料,它是别的东西(当我搜索 Anaconda 和 pip 试图安装一个不存在的包“香料”来重现你的问题时,我不能)。所以要求代码为MCVE。在发布之前,请在干净的 shell 中重新运行您的代码 sn-p 以确保所有内容都已定义、导入等。谢谢。
-
UTC是一个 pandas 数据帧,因此最好将对spice.str2et()的调用广播到整个第 0 列,这样性能更高。ets = UTC.iloc[:,0].apply(spice.str2et)。无需对列n = UTC.iloc[:,0]进行切片临时副本,这只会泄漏内存。