pandas - pandas 系列副本不创建副本
问题描述
所以我对pd.Series.copy()
行为感到非常困惑。根据1,它将创建一个深层副本,因此更改副本的值应使原始行(和数据框)保持不变。那么为什么这会返回 True 呢?
for i, row in df.iterrows():
q = row.copy()
q.col.append(['foo'])
return row.col == q.col
解决方案
首先,您应该注意 q 是一个 pd.Series。
根据 pd.Series.copy的文档,
“进行深度复制,包括数据和索引的副本。使用 deep=False 时,既不复制索引也不复制数据。请注意,当复制 deep=True 数据时,不会递归复制实际的 python 对象,只有引用对象。这与标准库中的 copy.deepcopy 形成对比,后者递归地复制对象数据。
这就是为什么只复制对列表的引用,而不是列表本身。您可能应该在手动复制列表的位置应用自定义功能。
推荐阅读
- javascript - Java 脚本代码无法在 Internet Explorer 中运行,而在 Google Chrome 中运行良好
- javascript - 移动菜单滚动仅禁用/启用一次
- spring-boot - 在zuul后面运行的Springboot微服务没有设置cookies
- paypal - Paypal - 在 php 中获取 onApprove 获取变量
- reactjs - React redux Too many re-renders.React 限制渲染次数防止死循环
- c# - 检索属性的名称和值具有特定的属性值
- python - Python将字符串列表转换为python列表
- scala - 如何在 Scala 的编译时验证类型是否存在
- python - 字符串python中的多个分隔符
- python - SQLAlchemy - 继承将属性条目写入两个表