12

我的应用程序涉及处理以下形式的数据(包含在 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 的日期时间索引来遵循这一点。我尝试在几个地方搜索以查看是否有使用这些 Unix 纪元时间戳的更快(内置)方法,但找不到任何方法。许多应用程序都使用这种时间戳术语。

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

3 回答 3

22

将它们转换为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])
于 2013-05-13T07:58:26.227 回答
20

您还可以使用熊猫to_datetime

df['datetime'] = pd.to_datetime(df["timestamp"], unit='s')

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

于 2015-11-06T19:59:16.160 回答
1

您也可以像这样使用 Pandas DatetimeIndex

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

*10**9其放入期望此类时间戳的格式。

这很好,因为它允许您使用系列上的.date().tz_localize()等功能。

于 2016-10-17T20:54:41.977 回答