熊猫:使用Unix纪元时间戳作为日期时间索引

时间:2013-05-13 07:57:00

标签: python numpy pandas time-series

我的申请涉及处理以下形式的数据(包含在CSV中):

Epoch (number of seconds since Jan 1, 1970), Value
1368431149,20.3
1368431150,21.4
..

目前我使用numpy loadtxt方法读取CSV(可以轻松使用Pandas的read_csv)。目前,对于我的系列,我正在转换时间戳字段,如下所示:

timestamp_date=[datetime.datetime.fromtimestamp(timestamp_column[i]) for i in range(len(timestamp_column))]

我通过将timestamp_date设置为我的DataFrame的Datetime索引来实现此目的。我尝试在几个地方搜索,看看是否有更快(内置)的方式使用这些Unix纪元时间戳,但找不到任何。许多应用程序都使用这种时间戳术语。

  1. 是否有处理此类时间戳格式的内置方法?
  2. 如果没有,处理这些格式的推荐方法是什么?

3 个答案:

答案 0 :(得分:19)

将它们转换为datetime64[s]

np.array([1368431149, 1368431150]).astype('datetime64[s]')
# array([2013-05-13 07:45:49, 2013-05-13 07:45:50], dtype=datetime64[s])

答案 1 :(得分:14)

您还可以使用pandas to_datetime

mapPartitions

此方法需要Pandas 0.18或更高版本。

答案 2 :(得分:1)

你也可以像这样使用Pandas DatetimeIndex

pd.DatetimeIndex(df['timestamp']*10**9)

*10**9将其置于预期此类时间戳的格式中。

这很不错,因为它允许您在系列中使用.date().tz_localize()等功能。