Python 在复制时重命名dataframe列会影响原始dataframe

Python 在复制时重命名dataframe列会影响原始dataframe,python,pandas,dataframe,Python,Pandas,Dataframe,我不明白为什么使用copy命令时,重命名操作会影响原始数据帧。为什么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) 发件人: 请注意,在复制包含Python对象的对象时 copy将复制数据,但不会递归地进行复制。更新 嵌套数据

我不明白为什么使用copy命令时,重命名操作会影响原始数据帧。为什么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)
发件人:

请注意,在复制包含Python对象的对象时 copy将复制数据,但不会递归地进行复制。更新 嵌套数据对象将反映在深度副本中

这似乎适用于列,当您使用索引访问它们时,正如您已经证明的那样

重新指定列时,行为与预期一致:

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

看来@jezrael我似乎没有在0.20上遇到过这个bug。3@zipa-我在pandas 0.23.0和同样的问题中进行了测试。@jezrael我在这里找到了问题。2013年:谢谢你@zipa!: