2017-09-30 11 views
0
import pandas as pd 
columns_list=['sport','home','away','selection','odds','tipster','stake', 
       'is_won','profit','bookie'] 

df = pd.DataFrame(columns=columns_list) 

def bet(sport,home,away,selection,odds,tipster,stake,profit,bookie): 
    if profit > 0: 
     is_won = True 
    elif profit < 0: 
     is_won = False 
    temp_df = pd.DataFrame([[sport,home,away,selection,odds,tipster,stake, 
          is_won,profit,bookie]], columns=columns_list) 
    df.append(temp_df, ignore_index=True) 
    #print(smemels has been inserted) 
    #add market 

bet(sport="football",home="sporting",away="porto",selection="sporting", 
    odds=2.7,tipster="me",stake=500,profit=500,bookie="marathon") 

私は、関数を作成することによって、空のDataFrameを作成し、新しい行を追加しようとしていますので、私は値のみを配置する必要があり、それが自動的に挿入されます。コードbet(...)を実行すると、実際にデータが追加されることはありません。作成するのではなく、データフレームにデータを追加する関数を作成するにはどうすればよいですか?

def bet(sport,home,away,selection,odds,tipster,stake,profit,bookie): 
    global df 
    if profit > 0: 
     is_won = True 
    elif profit < 0: 
     is_won = False 
    temp_df = pd.DataFrame([[sport,home,away,selection,odds,tipster,stake, 
          is_won,profit,bookie]], columns=columns_list) 
    df.append(temp_df, ignore_index=True, inplace = True) 

最初のものは、関数(関数の外)グローバル取るために指示変数DF:

+0

関数から 'df'を返し、' df = bet(..) 'と呼び出す必要があります。それはあなたが現在放棄する新しいオブジェクトを作成します。 – roganjosh

+0

申し訳ありません、 'return df.append(temp_df、ignore_index = True)' – roganjosh

+0

これは私が探しているものではありません –

答えて

-1

だけ追記機能で真のあなたの関数のヘッダと引数インプレース=下の「グローバルDF」を追加ローカルで新しいもの。 2番目のメソッドは、新しいオブジェクトを返す代わりにデータフレームを変更します。

+0

それでも動作しませんでした –

+0

これはテストしましたか?ドキュメントは、appendが新しいオブジェクトを作成すると言います。このように 'global'を使うことは悪い習慣であることを別にして、私はそれがうまくいかないことを強く疑っています。 – roganjosh

+0

df = df.append(temp_df、ignore_index = True)を追加しました。 –

0
def bet(**kwargs): 
    '''place your code here 

bet(sport="football",home="sporting",away="porto",selection="sporting", 
odds=2.7,tipster="me",stake=500,profit=500,bookie="marathon") 

http://book.pythontips.com/en/latest/args_and_kwargs.html

kwargsからを参照してください、あなたがやろうとしているように、あなたがキーワードとして追加することができます。

関連する問題