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 纪元时间戳作为日期时间索引的主要内容,如果未能解决你的问题,请参考以下文章
使用 sql 将字符串纪元代码从 unix 时间戳转换为日期