python - 在复制时重命名熊猫数据框列会影响原始数据框
问题描述
我不明白为什么在使用复制命令时,这个重命名操作会影响原始数据帧。为什么 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')
推荐阅读
- php - 使用 php 和 mysqli 执行更新 mysql 查询时出错
- mysql - 如何对具有日期范围的别名字段求和
- git - git fork 实际上是如何工作的?
- c++ - 如何让 clang-tidy 一个接一个地依次应用 FixItHints?
- android - 将图像作为(字节数组)从android上传到asp.net mvc服务器
- apache-spark - HBase + Spark:Dataframe 不将现有列值替换为相同 RowKey 的空值
- python - 在生产中从 python 金字塔项目部署/重新加载代码
- android - 当应用程序在 android pie (API 28) 中被杀死时检测网络状态并从后台上传视频数据
- ssl - Hyperledger Fabric SDK 未启动 TLS 握手
- msbuild - 错误:多个包与指定模式匹配:D:\a\r1\a\**\*.zip。请限制搜索模式