我不明白为什么在使用复制命令时,此重命名操作会影响原始数据帧。为什么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)
答案 0 :(得分:1)
来自docs:
注意,复制包含Python对象的对象时,要深入 copy将复制数据,但不会递归复制。更新a 嵌套数据对象将反映在深层副本中。
当你使用索引访问它们时,这似乎适用于列(如你所证明的那样)。
重新分配列时,行为符合预期:
df_copy.columns = ['y']
print(df.columns)
#Index([u'x'], dtype='object')