2017-09-30 60 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(...)它並不真正追加數據。如何創建一個函數將數據附加到數據框?

+0

您需要從函數返回df,並調用爲df = bet(..)。它會創建一個當前丟棄的新對象。 – roganjosh

+0

對不起,'return df.append(temp_df,ignore_index = True)' – roganjosh

+0

這不是我要找的 –

回答

-1

,只需加上「全球DF」下面的函數頭和論證就地= true在附加功能:

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

它仍然沒有工作 –

+0

你測試了嗎?文檔說append會創建一個新的對象。除了像這樣使用'global'是不好的做法,我強烈懷疑它不起作用,但無法測試。 – roganjosh

+0

我添加了df = df.append(temp_df,ignore_index = True),它現在可以工作了! –

相關問題