首页 > 解决方案 > 在复制时重命名熊猫数据框列会影响原始数据框

问题描述

我不明白为什么在使用复制命令时,这个重命名操作会影响原始数据帧。为什么 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)

标签: pythonpandasdataframe

解决方案


来自文档

请注意,当复制包含 Python 对象的对象时,深复制将复制数据,但不会递归地这样做。更新嵌套数据对象将反映在深层副本中。

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

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

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

推荐阅读