2012-10-22 72 views
1

隨着熊貓:轉換時間戳和毫秒DatetimeIndex

df = read_csv('data\query.csv') 

我'得到:

TIMESTAMP MILLISECONDS PRICE 
0 15.10.2012 08:00:06  350  24.6 
1 15.10.2012 08:00:06  630  24.7 
2 15.10.2012 08:00:06  640  24.9 
3 15.10.2012 08:00:06  650  24.5 
4 15.10.2012 08:00:06  710  24.3 

我想通了,這一個

df = read_csv('data\query.csv', parse_dates=[[0, 1]], index_col=0) 

被串聯前兩列到一個字符串,但仍然不會將索引識別爲DatetimeIndex

此外這一個

Import datetime 
datetime.datetime.strptime("15.10.2012 15:30:00 890", "%d.%m.%Y %H:%M:%S %f") 

做轉換工作。

問題:如何在read_csv中進行一次轉換和DatetimeIndex?

+0

你顯示一個csv文件的片段?也許你需要一個轉換器。 –

+0

我的csv包含一個標題行,三列,列以分號分隔:TIMESTAMP; MILLISECONDS;價格 15.10.2012 08:00:06; 350; 24.6 – user1766682

回答

1
In [188]: from dateutil import parser 

In [189]: from StringIO import StringIO 

In [190]: data = """\ 
TIMESTAMP;MILLISECONDS;PRICE 
15.10.2012 08:00:06;350;24.6 
""" 

In [191]: def date_parser(s): 
    return parser.parse(s[:-4]).replace(microsecond=int(s[-3:])*1000) 
    .....: 

In [192]: df = pd.read_csv(StringIO(data), sep=';', parse_dates=[[0, 1]], date_parser=date_parser) 

In [193]: df 
Out[193]: 
     TIMESTAMP_MILLISECONDS PRICE 
0 2012-10-15 08:00:06.350000 24.6 

In [194]: df.set_index('TIMESTAMP_MILLISECONDS', inplace=True) 
Out[194]: 
          PRICE 
TIMESTAMP_MILLISECONDS 
2012-10-15 08:00:06.350000 24.6 

In [195]: df.index 
Out[195]: 
<class 'pandas.tseries.index.DatetimeIndex'> 
[2012-10-15 08:00:06.350000] 
Length: 1, Freq: None, Timezone: None 
0

你試過.to_timestamp()

df_trend = pd.read_csv('googletrends.csv',parse_dates=True, index_col=0) 
ts_iphone = df_trend.ix['2007':'2013','iphone'].to_timestamp() 

你可以找到文件here