python - 熊猫中的条件行删除会影响先前定义的数据框
问题描述
今天在python编码中遇到了一个问题。我试图有条件地从数据框中删除一些行。基本上,我想创建我的数据框的副本,以便通过将复制的数据框与从中删除行的数据框进行比较来查看已删除的行。这是代码中的简化示例:
import pandas as pd
# define simple data frame
d = {'col1': ['chris', 'ben'], 'col2': [3, 8]}
df=pd.DataFrame(data=d)
# define df2 to be identical to df AS CURRENTLY DEFINED
df2=df
# next, drop all rows in df if 'col1' = 'ben'
df.drop(df.loc[df['col1']=='ben'].index, inplace=True)
我真正感到困惑的是,当逐行执行时,即使最后一行代码只引用了 df,它也会在 df2 上执行该操作!
为什么是这样?有什么我完全想念的吗?
解决方案
使用d2=df.copy()
而不是d2=df
创建副本
推荐阅读
- javascript - 返回给我一个完整的功能,而不是价值
- c# - 合并多个 C# 对象
- java - 即使存在,Spring Boot 也要求添加 bean
- php - 数据未提取到下拉列表中
- python - ParseError: not well-formed (invalid token) using ElementTree
- vue.js - 如何在 Vuex 操作完成之前阻止 Vue 生命周期继续进行?
- node.js - 如何解决 .forEach 循环,以免我向 api 发送垃圾邮件?
- c# - 如何检索 Program.cs 中返回的访问令牌以在 Startup.cs 中可用?
- ios - Apple 拒绝 - ITMS-90338:非公共 API 使用 - databasePool:didAddDatabase:, databasePool:shouldAddDatabaseToPool:, ddSetLogLevel
- material-ui - Material-UI TextField:控制边框颜色