python - 在不更改原始数据的情况下复制函数内部的数据框

标签 python pandas

我正在尝试创建一个函数,该函数可以在不更改原始数据帧的情况下更改数据帧副本的值。这是我目前所拥有的:

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)

它似乎有效,但后来我意识到 df['total_games'] 和 df['total_wins'] 的值已经改变。我正在尝试更改 local_df 的值,但保留值 df。关于如何解决此问题的任何想法?

最佳答案

local_df = df 只是创建一个对名为 local_dfdf 的引用。如果你想创建一个完整的其他数据帧(顺便说一下,我不推荐)你可以创建一个新的数据帧作为 df.copy(deep=True)

关于python - 在不更改原始数据的情况下复制函数内部的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40661930/

相关文章:

python Pandas : exclude rows below a certain frequency count

python - 将列表的数据框 reshape 为另一个数据框

python - csv.Dictwriter 文本输出在 Excel 中未正确解析

python - 尝试找到所有满足 f(x,y) = 0 且 g(x,y) = 0 的有序对 (x,y);即,我试图找到多变量函数的根

在面向对象编程中传递 Python 参数

Python pandas groupby 聚合

python区分数据帧列的 '300'和 '300.0'

python - 加权铰链损失函数

python - 表面图 : Add legend to facecolors

json - 将 JSON 嵌套到 DataFrame