Pandas:如何让函数只修改输入 Dataframe 的副本

gblwokeq  于 2023-03-28  发布在  其他
关注(0)|答案(1)|浏览(103)

情况我有一个dataframe,它被用作几个函数的输入,每个函数都应该返回一个输入dataframe的副本,其中的数据根据函数进行了修改。
问题如何设置函数,使其在运行时不修改原始 Dataframe (即输入 Dataframe )?
示例

df_input = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6]})
df_input

    a   b
0   1   4
1   2   5
2   3   6
def new_func(df):
    df_out = df
    df_out['new'] = 'C'
    return df_out
df_output = new_func(df_input)
df_output

    a   b   new
0   1   4   C
1   2   5   C
2   3   6   C
df_input

    a   b   new
0   1   4   C
1   2   5   C
2   3   6   C

期望的状态是仅df_output具有添加的列。
这可能是非常直接的,但任何指针或建议将不胜感激!

new9mtju

new9mtju1#

你需要显式地复制dfa = b在python中不会复制:

def new_func(df):
    df_out = df.copy()
    df_out['new'] = 'C'
    return df_out

请注意,如果您真的想添加一个新列,只需使用assign

df_output = df_input.assign(new='C')

相关问题