变量仅在 for 循环内本地分配[重复]

2023-12-03

我正在做第一个 Kaggle 挑战,我对这种行为感到惊讶。

组合由两个pd.DataFrame组成,一个是训练集,另一个是测试集。我想删除两列,因此我创建了一个 for 循环来迭代组合中的项目。

for dataset in combine:
    dataset = dataset.drop(['Ticket', 'Cabin'], axis=1)
    print(dataset.columns)
for dataset in combine:
    print(dataset.columns) 

由于某种原因,分配仅在本地发生,并且执行另一个 for 循环表明实际数据并未更改。输出如下。


Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
       'Parch', 'Fare', 'Embarked'],
      dtype='object')
Index(['PassengerId', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare',
       'Embarked'],
      dtype='object')
Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
      dtype='object')
Index(['PassengerId', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch',
       'Ticket', 'Fare', 'Cabin', 'Embarked'],
      dtype='object')

正如您所看到的,在第二个 for 循环中,列又回来了。哪里有问题?我是否误解了 for 循环在 Python 中的工作原理?


edit:

@kaya3 情况并非如此pandas.Series.map

for dataset in combine:  
    dataset['Name'] = dataset['Name'].map(name_map)  
    dataset['Name'] = dataset['Name'].fillna(0)

此代码更改了组合中的原始数据帧。文档说它返回系列(而不是 None)。如何判断函数是否会改变值?


当你在循环中时dataset是组合中 DataFrame 的副本,因此当您更改时dataset你没有改变实际的DataFramecombine,只是副本。要更改列表中的实际 DataFrame,请尝试以下操作:

for ii in range(len(combine)):
    combine[ii] = combine[ii].drop(['Ticket', 'Cabin'], axis=1)

现在您要更改列表中的变量,而不仅仅是副本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

变量仅在 for 循环内本地分配[重复] 的相关文章

随机推荐

  • Entity Framework Code First 和 SQL Server 2012 序列

    我正在实施数据库审计跟踪 通过 Web API 项目中的控制器执行的 CRUD 操作将序列化旧的和新的 poco 并存储它们的值以供以后检索 历史 回滚等 当我让一切正常工作时 我不喜欢它在 POST 期间让我的控制器看起来如何 因为我最终
  • cordova.file.*(所有目录)为空

    我正在从事 Ionic 移动应用程序开发 我的要求是创建客户端记录器来跟踪应用程序中的问题 我使用了中提到的方法https github com pbakondy filelogger 我可以在 Android 和 iOS 中创建日志文件
  • 绘图框 p 值显着性注释

    我已经开始使用并喜欢绘制箱线图来表示我的数据 然而 我很难找到一种方法来对比这两个群体 使用Plotly时有没有办法引入数据之间的统计显着性比较 我想创建这样的图表 其中 对应于 p 值 0 05 我发现使用scipy stats ttes
  • 使用 c# mvc4 读取 rss feed

    这是我的第一篇文章 所以我遇到了这个问题 而且我对这种语言或 c 非常陌生 我有一个读取新闻 rss 的模型 然后使用相同的索引控制器 我必须将其传递给视图 这是我的模型 using System using System Collecti
  • Three.js Raycaster 不与自定义网格相交

    我通过创建带有顶点的几何图形 然后构建面来构建自定义网格 八角棱柱 我现在尝试添加鼠标悬停交互 但是 Raycaster 没有返回该网格的交集 我认为这是网格的问题 因为其他几何图形在场景中的相交处正确返回 完整的例子可以在这里看到 htt
  • java.lang.ClassNotFoundException: org.dom4j.DocumentException

    我编写了一些代码来学习hibernate 它抛出下面的错误 我如何找出问题所在并解决它 dom4j 听起来像是一个 XML 问题 是hibernate cfg xml的问题吗 Exception in thread main java la
  • 我实际上可以在cuda卡上分配多少内存

    我正在编写一个使用 cuda 在 GPU 上执行计算的服务器进程 我想对传入请求进行排队 直到设备上有足够的内存来运行作业 但我很难计算出可以在设备上分配多少内存 我对作业需要多少内存有一个很好的估计 至少从 cudaMalloc 分配多少
  • 如何使用 VS2015 远程运行测试?

    我有一些 CodedUI 测试 我想在 Visual Studio 的远程计算机上运行 现在 过去您需要在某处安装一个测试控制器 在要运行的盒子上安装一个测试代理 让它们说话 然后使用指向该控制器的测试设置文件 我正在经历这个并在我的运行箱
  • 当应用程序处于工作模式时,UILocalNotification 不会触发

    关于为什么本地通知无法正常触发有很多问题here and there 还有几个关于为什么当应用程序处于后台状态时本地通知不会触发的问题 我也经历过them 但令我惊讶的是 我没有找到任何与前台状态或活动状态相关的通知帖子 即在我的应用程序中
  • 如何分组并获取具有最大值的元素 - javascript/node.js

    我有以下数组 我试图通过按 EntryId 分组来获取具有最大 id 的元素node js entryId 7wpNAXhYI id 5 entryId 7wpNAXhYI id 6 entryId 5PGB23RI id 7 entryI
  • Highcharts y 轴天花板未得到尊重

    我在使用 Highcharts 时遇到问题 其中两个 y 轴之一的上限没有得到尊重 Y 轴 1 代表百分比值 因此下限为 0 上限为 100 Y 轴 2 代表货币值 因此下限为 0 上限为null 由于某种原因 y 轴 1 的标签最多为 1
  • 使用 Flexbox 左对齐和居中对齐元素

    我正在使用 Flexbox 来对齐我的子元素 我想做的是将一个元素居中 并使另一个元素靠左对齐 通常我会使用设置左侧元素margin right auto 问题在于将中心元素推离中心 这可能吗without使用绝对定位 HTML 和 CSS
  • 找不到“laravel/homestead”框

    尝试配置 laravel 5 1 克隆了拉拉维尔 家园 将其克隆到之后Home目录 尝试运行 vagrant up 命令时抛出错误 如下所示 user user laravel homestead vagrant up Bringing m
  • 如何在不同的屏幕尺寸上得到完全相同的点?

    我想在用户点击特定区域时调用该操作 转到另一个视图 image 黑点 图像填充整个视图 内容模式为 Aspect Fit 问题是 当我将其设置在一种屏幕尺寸 例如 iPhone 8 上时 点击区域 会发生移动 我尝试使用按钮和约束或使用屏幕
  • 回归:导出的 Bash 函数在经过另一个过程后丢失

    从 Ubuntu 14 04 迁移到 16 04 时 我注意到我的几个 Bash 脚本由于缺少导出函数而失败 我想知道这是否与修复有关炮弹休克虫 尽管我只是简单地export f函数 而不依赖于 Bash 内部函数表示 仅当中间有另一个进程
  • 如何解决android studio中的gradle冲突?

    Please find my gradle file below 正如您所看到的 它显示红色 如果我将光标放在那里 我会得到提示 所有 com android support 库必须使用完全相同的版本规范 找到 com android su
  • 从asp.net代码获取某个网站的源代码

    有没有什么方法可以让我从 asp net 网站代码后面的一些 C 代码获取网站的源代码 最好是字符串 比如说 www google com 编辑 当然 我的意思是 html 代码 在每个浏览器中 您可以使用 viewsource 在上下文菜
  • 在 .net core、xUnit 项目中获取代码覆盖率

    我正在尝试使用以下方向的指示来获取 net core 项目中的代码覆盖率https github com Microsoft vstest docs blob master docs analyze md working with code
  • 从周日开始获取一周的问题

    以下是我创建的用于将星期日作为一周的开始日的函数 function getCurrentIntervalOfWeek liveratetime get start of each week dayofweek date w liverate
  • 变量仅在 for 循环内本地分配[重复]

    这个问题在这里已经有答案了 我正在做第一个 Kaggle 挑战 我对这种行为感到惊讶 组合由两个pd DataFrame组成 一个是训练集 另一个是测试集 我想删除两列 因此我创建了一个 for 循环来迭代组合中的项目 for datase