gpt4 book ai didi

python-3.x - 构建新数据框并保留旧数据框?

转载 作者:行者123 更新时间:2023-12-03 09:49:23 27 4
gpt4 key购买 nike

很抱歉问了一个幼稚的问题,但此刻这让我发疯。我有一个数据框 df1,并使用它创建新的数据框 df2,如下所示:

import pandas as pd
def NewDF(df):
df['sum']=df['a']+df['b']
return df
df1 =pd.DataFrame({'a':[1,2,3],'b':[4,5,6]})
print(df1)
df2 =NewDF(df1)
print(df1)

给出

   a  b
0 1 4
1 2 5
2 3 6

a b sum
0 1 4 5
1 2 5 7
2 3 6 9

为什么我失去 df1 形状并获得第三列?我怎样才能避免这种情况?

最佳答案

DataFrame 是 mutable所以你应该明确地传递一个副本给你的函数,或者让你的函数的第一步复制输入。否则,就像列表一样,您的函数所做的任何修改也适用于原始函数。

您的选择是:

def NewDF(df):
df = df.copy()
df['sum']=df['a']+df['b']
return df

df2 = NewDF(df1)

df2 = NewDF(df1.copy())

在这里我们可以看到你原来的实现中的所有东西都指的是同一个对象

import pandas as pd
def NewDF(df):
print(id(df))
df['sum']=df['a']+df['b']
print(id(df))
return df

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

print(id(df1))
#2242099787480

df2 = NewDF(df1)
#2242099787480
#2242099787480

print(id(df2))
#2242099787480

关于python-3.x - 构建新数据框并保留旧数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55094750/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com