请参阅下面的示例:
def func(arg):
print(id(arg))
df = pd.DataFrame(arg)
print(id(df))
df['b'] = [4,5,6]
a = pd.DataFrame( {'a' : [1,2,3]})
print(a, id(a))
func(a)
print(a)
a
0 1
1 2
2 3
681924702104
681924702104
681924718944
a b
0 1 4
1 2 5
2 3 6
为什么调用函数后会发生变化?我不明白,特别是因为他们有不同的 id。解决这个问题的正确步骤是什么?
最佳答案
pd.DataFrame()
采用一个参数来指定是否应复制数据。默认值为False
。如果您想要副本,请将其设置为 True
:
df = pd.DataFrame(arg, copy=True)
这将修复您的示例。
关于python - 为什么函数可以改变外部的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45120077/