Pandas Dataframe - PullRequest
       12

Pandas Dataframe

0 голосов
/ 01 октября 2019
import numpy as np
import pandas as pd
from pandas_datareader import data as wb
from yahoofinancials import YahooFinancials
sympol = [input()]
abc = YahooFinancials(sympol)
l=abc.get_financial_stmts('annual', 'cash')
df=pd.concat([pd.DataFrame(key) for key in l['cashflowStatementHistory']['FB']],axis=1,sort=True).reset_index().rename(columns={'index':'Time'})

Спасибо, что работает, но только с определенным симполом. Как настроить его так, чтобы я мог вместо него ввести любой символ. Что писать вместо «FB». Я пробовал `[[sympol]], но выдает ошибку:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-164-6d2ff2d61183> in <module>
      6 abc = YahooFinancials(sympol)
      7 l=abc.get_financial_stmts('annual', 'cash')
----> 8 df=pd.concat([pd.DataFrame(key) for key in l['cashflowStatementHistory'][[sympol]]],axis=1,sort=True).reset_index().rename(columns={'index':'Time'})

TypeError: unhashable type: 'list'

В чем, по-вашему, проблема? Как это исправить.

Спасибо за помощь.

1 Ответ

1 голос
/ 02 октября 2019

Я думаю, что проще всего использовать понимание списка с transpose по DataFrame.T из DataFrame и последним использованием concat.

Если нужно работатьпозже с TimeSeries, лучшее также создать DatetimeIndex:

df = pd.concat([pd.DataFrame(x).T for x in l['cashflowStatementHistory']['FB']], sort=True)
df.index = pd.to_datetime(df.index)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...