【发布时间】:2016-06-28 05:23:51
【问题描述】:
我正在尝试将一些 Twitter 文本日期从文件导入 Python 数组。我写了以下函数:
import numpy as np
# Load data from a text file into an array and return the array contents
def load_text_file(file_path, file_name):
try:
text_data = np.loadtxt(file_path.strip() + file_name.strip(), dtype={'names': ('UserId', 'CreatedAt', 'CollectedAt', 'NumerOfFollowings', 'NumberOfFollowers', 'NumberOfTweets', 'LengthOfScreenName', 'LengthOfDescriptionInUserProfile'), 'formats': ('i8', 'datetime64[us]', 'datetime64[us]', 'i8', 'i8', 'i8', 'i8', 'i8')}, delimiter="\t")
return text_data
except IOError as e:
print(e)
当我查看导入的时间戳对象时,它们似乎在一种情况下偏离了 6 小时,在另一种情况下偏离了 7 小时。以下是我尝试导入的两行数据示例:
5945472 2007-05-10 20:12:18 2009-11-17 20:09:52 156 223 2134 10 54
5947912 2007-05-10 22:08:58 2009-11-19 11:28:25 52 37 730 7 32
这些被导入到 Python 数组中,如下所示:
(5945472, datetime.datetime(2007, 5, 11, 2, 12, 18), datetime.datetime(2009, 11, 18, 3, 9, 52), 156, 223, 2134, 10, 54)
(5947912, datetime.datetime(2007, 5, 11, 4, 8, 58), datetime.datetime(2009, 11, 19, 18, 28, 25), 52, 37, 730, 7, 32)
如您所见,时间戳相差 6 小时和 7 小时。我不确定为什么。由于更改,日期更改为第二天。有人知道我如何可以完全按原样导入时间戳吗?谢谢!!!
【问题讨论】:
-
奇怪,好像每次都加一。注意:
20->2(+4)、20->3(+5)、22->4(+6) 和11->18(+7)。 -
我认为连续第一个时间戳增加 6 小时,第二个时间戳增加 7 小时。它实际上是 20-> 2 (+6) 而不是 +4。如果我将日期 2007-05-10 更改为 2007-11-10,则偏移量变为 +7 而不是 +6。我认为这与 YMD 与 YDM 有关。但是,我不明白为什么要增加 7 小时。我住在犹他州,比格林威治标准时间晚 7 小时。也许这与它有关。不知道如何将偏移量指定为零小时。
-
哦,对了,我想的是 12 小时制。 :) 我在本地尝试过,得到了不同的结果:
datetime.datetime(2007, 5, 11, 0, 12, 18), datetime.datetime(2009, 11, 18, 1, 9, 52)和datetime.datetime(2007, 5, 11, 2, 8, 58), datetime.datetime(2009, 11, 19, 16, 28, 25)。也许这与时区有关? (虽然我不确定为什么它会根据列而改变) -
差异变化可能是由于夏令时。 2007 年是第 5 个月,2009 年是第 11 个月。这 2 次应该有不同的夏令时。
-
你说他们是
imported into a Python array as follows。你怎么知道?你打印数字了吗?如果是,怎么做?