2013-05-13 170 views
9

我的申請涉及與數據處理(包含在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時代的時間戳,但找不到任何。很多應用程序都使用這種時間戳術語。

  1. 是否有內置的方法來處理這種時間戳格式?
  2. 如果不是,那麼處理這些格式的建議方法是什麼?

回答

15

將它們轉換爲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

哇!不知道它可能是如此簡單!最好的部分是它保留了矢量化操作的感覺。 – 2013-05-13 08:02:43

+3

N.B. https://github.com/pydata/pandas/issues/3540 – 2013-05-13 21:06:01

12

您也可以使用熊貓to_datetime

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

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

1

您也可以使用熊貓DatetimeIndex像這樣

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

*10**9把它轉化成其期待這樣的時間戳的格式。

這很好,因爲它允許您在系列上使用諸如.date().tz_localize()之類的功能。