熊猫:使用Unix时间戳时间戳作为日期时间索引
问题描述:
我的申请涉及与数据处理(包含在CSV),其为以下形式:熊猫:使用Unix时间戳时间戳作为日期时间索引
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的日期时间指数为我的数据帧。我试着在几个地方搜索,看看是否有更快(内置)的方式来使用这些Unix时代的时间戳,但找不到任何。很多应用程序都使用这种时间戳术语。
- 是否有内置的方法来处理这种时间戳格式?
- 如果不是,那么处理这些格式的建议方法是什么?
答
将它们转换为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])
答
您也可以使用熊猫to_datetime:
df['datetime'] = pd.to_datetime(df["timestamp"], unit='s')
此方法需要熊猫0.18或更高版本。
答
您也可以使用熊猫DatetimeIndex像这样
pd.DatetimeIndex(df['timestamp']*10**9)
的*10**9
把它转化成其期待这样的时间戳的格式。
这很好,因为它允许您在系列上使用诸如.date()
或.tz_localize()
之类的功能。
哇!不知道它可能是如此简单!最好的部分是它保留了矢量化操作的感觉。 – 2013-05-13 08:02:43
N.B. https://github.com/pydata/pandas/issues/3540 – 2013-05-13 21:06:01