2013-04-03 2 views
1

Загрузив данные из yahoo для акций с помощью get_data_yahoo, я хочу получить время для каждой строки ... Как мне это сделать?Как получить временную метку в пандах DataFrame?

Один из способов я вроде понял, чтобы сделать это:

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

EDIT:

Поэтому в основном я хочу что-то вроде 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 

Ожидаемый выход время от последней эпохи для каждой из дат в массиве или каким-либо другим способом, чтобы получить время каждой записи. Код примера, который я дал, дает мне результаты, которые я хочу, однако, если я хочу получить доступ к четвертому элементу, единственным способом сделать это будет .next итератор 4 раза, это похоже на плохой метод.

Первый вопрос: есть ли более очевидный способ, что я делаю, не лучший способ сделать это.

Второй вопрос: какие единицы являются результатом? Я думаю, что это наносекунд, но не уверен ...

+0

Что вы хотите делать с этими временами, в конечном счете, ? Помогите нам понять, где вы собираетесь с этим, и вы получите более четкий ответ. –

+0

Я хочу вычесть subtract stockTime [1] - stockTime [0], поэтому мне нужно значение первого и второго элементов ... в конечном счете, я пытаюсь построить подсвечник и хочу иметь правильную ширину для баров – evan54

ответ

1

Правильный ответ я нашел в конце концов here

Вы можете получить доступ строки, используя st.ix[index_val] из раздела 5.2.8 ссылки.

ц = st.ix [2] .Name

который возвращает метку времени

ts является такой же, как st[0] в вопросе

2

Timestamps имеют 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 т.е. unix time * 10 ** 9:

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

hm .... но мой вопрос касается того, как я получаю Timestamp часть запаса? Я не знаю, как получить к нему доступ, кроме того, что я показал. – evan54

+0

@ evan54 не совсем понятно, что такое структура вашего DataFrame, примером может помочь много, например. вывод df.head(). Конечно, вы хотите избежать использования цикла for. –

+0

Результат, который я ожидаю, такой же, как из кода, который я опубликовал. Я обновил вопрос, чтобы включить вывод '.head' и ожидаемый результат функции, которую я за ... Надеюсь, что очищает вещи до – evan54

0

Фактически каждая строка содержит кортеж содержит индекс и данные, поэтому вы можете сделать это:

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

любой способ доступа к нему из цикла? Я имею в виду, что это в значительной степени то, что я показал правильно? Я хочу получить 'stock [« Время »] или что-то в этом роде. – evan54

+0

Какой результат вы ожидаете? – waitingkuo

+0

Я отправил то, что я ожидаю, это в основном то, что вывод реализации .next. – evan54