2017-05-11 10 views
0

私はpandas_datareaderを使って株価を返しています。このドキュメントでは、pandasデータフレームがpandas_datareaderによって返されることを示しています。問題は、データフレームが空の列名で返されることです。それは、私が列の名前を変更するまで(これが真であると信じる)、別の列を追加することができないことを意味します。とにかくここに私のコードは次のとおりです。pandas dfで空の列名を変更するにはどうすればよいですか?

from datetime import datetime, timedelta 
from pandas import pandas as pd 
from pandas_datareader import data, wb 
from matplotlib.figure import Figure 
from matplotlib.dates import DateFormatter 
import matplotlib.pyplot as plt 
from matplotlib import style 
import datetime as dt 
import numpy as np 

style.use('ggplot') 
today = dt.date.today() 
dtStart = (dt.datetime.strptime("2017-01-01", '%Y-%m-%d')) 
dtEnd = (dt.datetime(today.year,today.month,today.day)).isoformat(' ') 

def genGraph(graph_filename): 

    dtStart = (dt.datetime.strptime("2015-01-01", '%Y-%m-%d')) 
    my_stocks = {'VOD.L'} # Single sumbol. 
    # my_stocks = {'VOD.L', {'BP.L'}} # Test multiple symbols. 

    main_df = pd.DataFrame() 
    df = pd.DataFrame() 

    for sym in my_stocks: 

     if main_df.empty: 
      main_df = (data.get_data_google(sym, dtStart)['Close']) 
      main_df.rename(columns = {'' : 'X'}, inplace=True) 

      print(main_df.head()) 

     else: 
      main_df = main_df.join((data.get_data_google(sym, dtStart)['Close']), how='outer') 
      print(main_df) 
    else: 
     print('')  
    print(main_df.tail()) 
    return True 
genGraph('OK') 

この現在返します One Symbol

Two Symbols

を、価格で列の名前を変更することができないようですが、私はいろいろなことを試してみました。私はまた、日付の列の名前を変更し、インデックスとして作成しようとしました。いいえ、運がない!私はそれがテーブルにデータを貼り付け、それを元に戻す方が良いのだろうかと思います。パンダのデータフレームは、単純な操作ではあまりに複雑すぎるようです。

私はpython 3.5.3と最新のパンダを持っています。

+0

'print(main_df.columns)'はどうなっていますか?また、別の列を追加するために列名を知る必要はありません。 'main_df ['desired_col_name_here'] = newcoldata'はうまくいくはずです。 – EFT

+0

トレースバック(最新の呼び出しの最後):GENGRAPH プリント(main_df.columns)で GENGRAPH( 'OK') ファイル "test.py" で ファイル "test.py"、43行、30行、 戻り値オブジェクト.__ getattribute __(self、name) AttributeError: 'Series'オブジェクトには属性がありません。 '、' C:¥Python35-32¥lib¥site-packages¥pandas¥core¥generic.py "、2740行目、__getattr__列 ' –

+0

日付 2017-05-05 00:00:00 204.95 2017-05-08 00:00:00 205.15 2017-05-09 00:00:00 205.15 2017-05-10 00:00: 00 206.6 desired_col_name_here newcoldata dtyp e:object –

答えて

0

コメントに投稿されたAttributeErrorは重要です。シリーズはDataFrameではなく、単一の列に相当します。

main_df.to_frame() 

はデータフレームを返します。データフレームの名前を変更して新しい列を追加できます。

+0

ありがとうございました。私の間違い私は違いを認識していませんでした。 –

関連する問題