在副本上重命名pandas dataframe列会影响原始数据帧

时间:2018-05-28 08:59:06

标签: python pandas dataframe

我不明白为什么在使用复制命令时,此重命名操作会影响原始数据帧。为什么df_copy是df的视图而不是真正的副本?我希望print语句输出' x'不是' y'。

df = pandas.DataFrame({'x': [0, 1]})
df_copy = df.copy(deep=True)
df_copy.columns.values[0] = 'y'
print(df.columns)

1 个答案:

答案 0 :(得分:1)

来自docs

  

注意,复制包含Python对象的对象时,要深入   copy将复制数据,但不会递归复制。更新a   嵌套数据对象将反映在深层副本中。

当你使用索引访问它们时,这似乎适用于列(如你所证明的那样)。

重新分配列时,行为符合预期:

df_copy.columns = ['y']
print(df.columns)
#Index([u'x'], dtype='object')