2013-02-27 115 views
2

我在爲我的熊貓數據框獲取正確的時間索引時遇到了一些問題。在Python中獲取熊貓數據幀的時間索引

import pandas as pd 
from datetime import strptime 
import numpy as np 

stockdata = pd.read_csv("/home/stff/symbol_2012-02.csv", parse_dates =[[0,1,2]]) 
stockdata.columns = ['date_time','ticker','exch','salcond','vol','price','stopstockind','corrind','seqnum','source','trf','symroot','symsuffix'] 

我認爲問題是時間的東西出現在前三列:年/月/日,小時/分鐘/秒,毫秒。另外,如果在中午之前,小時/分鐘/秒列將下降第一個零。

print(stockdata['date_time'][0]) 
20120201 41206 300 

print(stockdata['date_time'][50000]) 
20120201 151117 770 

理想情況下,我想確定自己的功能,可以通過在read_csv功能的轉換參數來調用。

回答

2

假設你有一個csv文件看起來像這樣:

date,time,milliseconds,value 
20120201,41206,300,1 
20120201,151117,770,2 

然後使用parse_datesindex_colsread_csv方法date_parser的參數,可以構建一個pandasDataFrame隨時間指數是這樣的:

import datetime as dt 
import pandas as pd 
parse = lambda x: dt.datetime.strptime(x, '%Y%m%d %H%M%S %f') 
df = pd.read_csv('test.csv', parse_dates=[['date', 'time', 'milliseconds']], 
       index_col=0, date_parser=parse) 

這產生了:

      value 
date_time_milliseconds   
2012-02-01 04:12:06.300000  1 
2012-02-01 15:11:17.770000  2 

而且df.index

<class 'pandas.tseries.index.DatetimeIndex'> 
[2012-02-01 04:12:06.300000, 2012-02-01 15:11:17.770000] 
Length: 2, Freq: None, Timezone: None 

這個答案是基於類似的解決方案proposed here

+0

我想缺少零不會搞砸%H – Taylor 2013-03-02 17:15:38