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

Posted

技术标签:

【中文标题】Pandas:使用 Unix 纪元时间戳作为日期时间索引【英文标题】:Pandas: Using Unix epoch timestamp as Datetime index 【发布时间】:2013-05-07 04:52: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】:

你也可以像这样使用 Pandas DatetimeIndex

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

*10**9 将其转换为此类时间戳所期望的格式。

这很好,因为它允许您在系列中使用 .date().tz_localize() 等函数。

【讨论】:

【参考方案2】:

您也可以使用 pandas to_datetime

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

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

【讨论】:

【参考方案3】:

将它们转换为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])

【讨论】:

哇!没想到这么容易!最好的部分是它保留了矢量化操作的感觉。

以上是关于Pandas:使用 Unix 纪元时间戳作为日期时间索引的主要内容,如果未能解决你的问题,请参考以下文章

如何从 postgres 获取时间戳作为 Unix 纪元?

使用 sql 将字符串纪元代码从 unix 时间戳转换为日期

将长的 Unix 纪元时间戳转换为实际日期/时间

熊猫日期时间到 unix 时间戳秒

将记录的日期时间转换为 UNIX 纪元时间戳的 Perl 脚本

如何从给定城市的给定日期和时间获取 unix 纪元时间戳(以秒为单位)?