我不明白为什么在使用复制命令时此重命名操作会影响原始数据帧。为什么df_copy是df的观点而不是真正的副本?我希望打印语句输出"x"而不是"y"。
df = pandas.DataFrame({'x': [0, 1]})
df_copy = df.copy(deep=True)
df_copy.columns.values[0] = 'y'
print(df.columns)
来自文档:
请注意,在复制包含 Python 对象的对象时,深 复制将复制数据,但不会递归复制。正在更新 嵌套的数据对象将反映在深层副本中。
当您使用索引访问列时,这似乎也适用于列(正如您已经证明的那样(。
重新分配列时,行为符合预期:
df_copy.columns = ['y']
print(df.columns)
#Index([u'x'], dtype='object')