2013-04-03 51 views
1

使用get_data_yahoo從雅虎下載股票數據,然後我想訪問每行的時間......我該怎麼做?我有種想通了,要做到這一點如何訪問DataFrame熊貓中的時間戳?

一種方法是:

it = stock.iterrows() 
st0 = it.next() 
resultIWant = st0[0].value # this gives what I want (almost) 
print resultIWant 

編輯:

所以基本上我想要的東西,像stock['Open']但對於時間,不便像stock['Time']將是理想的..

有人問輸出.head

  Open High Low Close Volume Adj Close 
Date             
2012-04-03 2.06 2.09 2.01 2.08 463200  2.08 
2012-04-04 2.04 2.05 2.01 2.02 335600  2.02 

從功能預計輸出:

print find_time(stock,2) # function I'm looking for 
1333497600000000000  # resulting output 

預期的輸出是從每個陣列中的或一些其他方式來獲得每個條目的時間日期的最後一個紀元的時間。我給出的示例代碼爲我提供了我想要的結果,但是如果我想訪問第四個元素,唯一的方法是使用迭代器4次迭代器.next,這似乎是一個不好的方法。

第一個問題:有沒有更明顯的方法,我所做的似乎不是最好的方式來做到這一點。

第二個問題:結果是什麼單位?我認爲這是納秒但不知道......

+0

你要什麼用這些時間做,最終?幫助我們瞭解你要去哪裏,並且你會得到更清晰的答案。 –

+0

我想減去減法stockTime [1] - stockTime [0],所以我需要的第一個和第二個元素的值...最終我試圖建立一個燭臺圖,並希望有正確的寬度爲酒吧 – evan54

回答

1

正確答案我到底here

發現可以從參考第5.2.8訪問使用st.ix[index_val]行。

TS = st.ix [2],請將.Name

返回時間戳

ts相同的問題st[0]

2

時間戳有time方法:

In [1]: t = pd.Timestamp('200101011300') 

In [2]: t 
Out[2]: <Timestamp: 2001-01-01 13:00:00> 

In [3]: t.time() 
Out[3]: datetime.time(13, 0) 

value是因爲午夜1 納秒 1970年1月即unix time * 10 ** 9:

In [4]: t.value 
Out[4]: 978354000000000000 
+0

嗯....但我的問題是關於如何獲得股票的時間戳部分?除了我所展示的內容,我不知道如何訪問它。 – evan54

+0

@ evan54關於DataFrame的結構並不完全清楚,一個例子可以幫助很多人,例如df.head()的輸出。當然你想避免使用for循環。 –

+0

我期望的輸出與我發佈的代碼相同。我更新了這個問題,以包含'.head'輸出和函數的預期輸出...希望能夠清除一切 – evan54

0

其實每一行都包含一個包含索引和數據的元組,所以你可以這樣做:

for index, row in stock.iterrows(): 
    print index 
+0

任何方式訪問它出一個循環?我的意思是這幾乎是我展示的對嗎?我想獲得'stock ['Time']'或類似的東西.. – evan54

+0

你期望輸出什麼? – waitingkuo

+0

我發佈了我所期望的,基本上是'.next'實現輸出 – evan54