2016-06-05 5 views
1

Ich bin sehr neu in der Codierung, aber genieße es wirklich rumspielen mit Daten aus Yahoo Finanzen ziehen. Ich habe bisher einen Code entwickelt, der den Schlusskurs für ausgewählte Ticker abzieht und die monatliche Veränderung in% berechnet - sie wird als eine transponierte Tabelle mit zwei Spalten angezeigt. Wenn ich die Daten in einem Datenframe zurückgebe, möchte ich in der Lage sein, beide Spalten mit .columns zu benennen, aber es scheint die linke Spalte überhaupt nicht zu erkennen (die mit den Tickern). Wenn ich versuche, mehr als 1 Artikel an .column zu übergeben, gibt es eine Fehlermeldung, dass es nur 1 Spalte gibt. Weiß jemand, warum das so wäre und wie ich die Daten manipulieren könnte, damit die linke Spalte erkannt wird?Links am meisten Spalte nicht erkannt, wenn transponiert - Yahoo Finance Pandas

symbols_list = ["AAPL", "TSLA"] 
    d = {} 
    for x in symbols_list: 
     try: 
      d[x] = web.DataReader(x, "yahoo", '2015-12-31') 
     except: 
      print "Can't find ", x 
    ticker = pd.Panel(d) 
    df1 = ticker.minor_xs('Adj Close') 
    daily = df1.resample('B', how=lambda x: x) 

    monthly_change = daily.pct_change(periods = 24) 

    past_month_change = monthly_change.tail(1) 

    transposed = past_month_change.transpose() 

    transposed.columns = ["Monthly % Change"] #This works, but only names the right column, not the left. 
+1

Spalten eine Liste mehrerer Elemente nehmen können. Du gibst nur einen ein. – Parfait

+0

als @Parfait, hat bereits gesagt, dass Sie es so machen sollten: 'df.columns = ['col1', 'col2', 'colN']' oder alternativ können Sie das tun: 'df = df.rename (columns = {'col1': 'links', 'col5': 'new_col_name'}) ' – MaxU

+0

Sorry, vielleicht war ich nicht klar. Wenn ich versuche, mehr als einen Gegenstand zu übergeben, gibt es eine Fehlermeldung, dass es nur 1 Spalte, aber 2 Spaltenüberschriften gibt. – Andy

Antwort

0

nach dem Ausführen von Code ich habe folgendes:

In [317]: transposed.columns 
Out[317]: DatetimeIndex(['2016-06-03'], dtype='datetime64[ns]', name='Date', freq='B') 

In [318]: transposed.info() 
<class 'pandas.core.frame.DataFrame'> 
Index: 2 entries, AAPL to TSLA 
Data columns (total 1 columns): 
2016-06-03 00:00:00 2 non-null object 
dtypes: object(1) 
memory usage: 32.0+ bytes 

jetzt können Sie Index zurücksetzen und Spalten umbenennen:

In [320]: transposed = transposed.reset_index() 

In [321]: transposed.columns = ['code', 'Monthly % Change'] 

In [322]: transposed 
Out[322]: 
    code Monthly % Change 
0 AAPL  0.0520737 
1 TSLA  -0.0943342 
+0

Perfekt, genau das habe ich gesucht. Vielen Dank! – Andy

+0

@Andy, immer froh zu helfen! :) danke für die Annahme der Antwort! – MaxU

Verwandte Themen