2016-11-17 2 views
2

元のデータフレームを変更せずにデータフレームコピーの値を変更できる関数を作成しようとしています。オリジナルを変更せずに関数内のデータフレームのコピーを作成

def home_undervalued(df): 
    local_df = df 
    local_df['total_games'] = 0 
    local_df['total_wins'] = 0 
    cond_1 = local_df['predicted_spread'] > local_df['vegas_spread'] 
    cond_2 = local_df['actual_spread'] > local_df['vegas_spread'] 
    cond_3 = local_df['predicted_spread'] - local_df['vegas_spread'] >= 3 

    local_df.loc[cond_1 & cond_3 , 'total_games'] = 1 
    local_df.loc[cond_1 & cond_2 & cond_3 , 'total_wins'] = 1 

    total_games = sum(local_df.total_games) 
    total_wins = sum(local_df.total_wins) 

    return float(total_wins)/float(total_games) 

が、私はその後、

home_undervalued(df) 
動作しているよう

で関数を呼び出したが、その後、私は[「total_games」]とDFの[」DFの値を実現:これは私がこれまで持っているものですtotal_wins ']が変更されました。私はlocal_dfの値を変更しようとしていますが、dfの値は保持しています。どのようにこれを修正するための任意のアイデア?

答えて

2

local_df = dflocal_dfという名前のdfへの参照が作成されます。他のすべてのDataFrameを作成したい場合は、新しいデータフレームを作成することができます。df.copy(deep=True)

+0

新しいコピーを作成する代わりに何をお勧めしますか?列を追加していますか? – user3294779

+0

私はあなたがコピーが必要だと思っている理由を検討しますが、必要があるかもしれませんが、おそらくより効果的な解決策があります。列を追加したり、既存のものを置き換えることは必要ないでしょう。 –

+0

意味があります。ありがとうございました。 – user3294779

2

local_dfでこの行はdfのコピーを保存します後だけDataFrame

local_df = df.copy(deep=True) 

copyメソッドを使用します。

関連する問題