首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么即使我分割了原始DataFrame并将其赋给了另一个变量,原始DataFrame仍然改变了值?

原始DataFrame改变值的原因是因为在Python中,变量赋值是通过引用传递的方式进行的。当将原始DataFrame分割并赋给另一个变量时,实际上是将原始DataFrame的引用赋给了新的变量,而不是创建了一个新的DataFrame对象。

这意味着,无论是对原始DataFrame还是新的变量进行操作,实际上都是对同一个DataFrame对象进行的操作。因此,当对其中一个对象进行修改时,另一个对象也会受到影响,因为它们共享相同的内存空间。

要避免这种情况,可以使用DataFrame的copy()方法创建一个新的DataFrame对象,而不是仅仅赋值给另一个变量。copy()方法会创建一个原始DataFrame的副本,这样对副本的修改不会影响原始DataFrame。

以下是一个示例代码:

代码语言:txt
复制
import pandas as pd

# 创建原始DataFrame
df_original = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})

# 使用copy()方法创建副本
df_copy = df_original.copy()

# 修改副本的值
df_copy['A'][0] = 100

# 打印原始DataFrame和副本的值
print(df_original)
print(df_copy)

输出结果为:

代码语言:txt
复制
   A  B
0  1  4
1  2  5
2  3  6

     A  B
0  100  4
1    2  5
2    3  6

可以看到,修改副本的值并不会影响原始DataFrame的值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

快速解释如何使用pandas的inplace参数

当您使用inplace=True时,将创建更改新对象,而不是原始数据。如果您希望更新原始数据以反映已删除的行,则必须将结果重新分配到原始数据中,如下面的代码所示。...是的,最后一行代码等价于下面一行: df_2.dropna(inplace=True) 后者更优雅,并且不创建中间对象,然后将其重新分配给原始变量。...它直接改变原始数据框架,因此,如果需要改变原始数据,那么inplace=True是首选。 那么,为什么会有在使用inplace=True产生错误呢?...该代码正在更改只有两列的dataframe,而不是原始数据框架。这样做的原因是,您选择dataframe的一个片段,并将dropna()应用到这个片段,而不是原始dataframe。...将变量inplace= True的结果 df = df.dropna(inplace=True) 这又是你永远不应该做的事情!你只需要将None重新赋值df。

2.4K20

基于Spark的机器学习实践 (八) - 分类算法

特征是术语的频率(在多项式朴素贝叶斯中)或零或一个,表示该术语是否在文档中找到(在伯努利朴素贝叶斯中)。要素必须为非负值。...然后,将新的实例映射到同一空间,基于它们落在间隔的哪一侧来预测所属类别。 除了进行线性分类之外,SVM还可以使用所谓的[核技巧]有效地进行非线性分类,将其输入隐式映射到高维特征空间中。...例如,学习算法是Estimator,其在DataFrame上训练产生模型。...有这些处理特定问题的 Transformer 和 Estimator,我们就可以按照具体的处理逻辑来有序的组织 PipelineStages 创建一个 Pipeline,如 val pipeline...底行表示流经管道的数据,其中柱面表示DataFrame。在原始DataFrame上调用Pipeline.fit()方法,该原始DataFrame具有原始文本文档和标签。

1.1K20
  • Python科学计算之Pandas

    而Scipy(会在接下来的帖子中提及)当然是另一个主要的也十出色的科学计算库,但是认为前三者才是真正的Python科学计算的支柱。...在此,将采用英国政府数据中关于降雨量数据,因为他们十易于下载。此外,还下载一些日本降雨量的数据来使用。 ? 这里我们从csv文件中读取到了数据,并将他们存入了dataframe中。...有一点需要注意的是,在这里故意让所有列的标签都没有空格和横线。后面你将会看到,如果我们这样命名变量,Pandas会将它们存成什么类型。 你将获得同之前一样的数据,但是列名已经变了: ?...这样,的数据会以降序排列。 ? 当你为一列数据设置一个索引时,它们将不再是数据本身。如果你想把索引设置为原始数据的形式,你可以使用和set_index相反的操作——reset_index。...这个pivot创造许多空的或为NaN的条目。个人觉得dataframe被乱七八糟的NaN分散了注意力,所以使用了fillna(‘’)将他们变成了空字符串。

    2.9K00

    基于Spark的机器学习实践 (八) - 分类算法

    特征是术语的频率(在多项式朴素贝叶斯中)或零或一个,表示该术语是否在文档中找到(在伯努利朴素贝叶斯中)。要素必须为非负值。...然后,将新的实例映射到同一空间,基于它们落在间隔的哪一侧来预测所属类别。 除了进行线性分类之外,SVM还可以使用所谓的核技巧有效地进行非线性分类,将其输入隐式映射到高维特征空间中。...例如,学习算法是Estimator,其在DataFrame上训练产生模型。...有这些处理特定问题的 Transformer 和 Estimator,我们就可以按照具体的处理逻辑来有序的组织 PipelineStages 创建一个 Pipeline,如 val pipeline...底行表示流经管道的数据,其中柱面表示DataFrame。在原始DataFrame上调用Pipeline.fit()方法,该原始DataFrame具有原始文本文档和标签。

    1.8K31

    图解-使用【变异系数】赋予权重,比较效果

    大家好,又见面是你们的朋友全栈君。...变异系数=标准差/平均值 比较 两组 量纲不同的数据 的 离散程度,不能用标准差,可考虑变异系数 不适用场景:数据下限小于0(导致平均值近0) 变异系数越大,离散程度越大 变异系数权重法 通过变异系数来权...( 最大 – 最小 ) 新数据=(原数据−最小)/(最大−最小) 效果: 1、数据映射到[0,1] 2、消除量纲差异 3、放大差距 场景: 老师学生评分(主观评分,如:文明、品德...…)时,分数的区间是[0,100],即使有些学生很顽劣,也不会低于80,结果所有学生的分数在80~100,优劣学生之间相差不到20%;使用Min-Max标准化或许可以还原出学生之间真实差距 Python..., Series from sklearn.preprocessing import minmax_scale from numpy import ndarray # 原始数据 df: DataFrame

    1.1K20

    合并Pandas的DataFrame方法汇总

    在《跟老齐学Python:数据分析》一书中,对DataFrame对象的各种常用操作都有详细介绍。本文根据书中介绍的内容,参考其他文献,专门汇总合并操作的各种方法。...因此,如果其中一个表中缺少user_id ,它就不会在合并的DataFrame中。 即使交换了左右行的位置,结果仍然如此。...DataFrames ,它只将另一个DataFrame添加到第一个DataFrame返回它的副本。...如果设置为 True ,它将忽略原始并按顺序重新创建索引 keys:用于设置多级索引,可以将它看作附加在DataFrame左外侧的索引的另一个层级的索引,它可以帮助我们在不唯一时区分索引 用与 df2...一个新变量: df_row_concat = pd.concat([df2, df2_addition]) print(df_row_concat) 成功地填充缺少的: user_id

    5.7K10

    推荐:这才是你寻寻觅觅想要的 Python 可视化神器

    我们还提供一些功能来制作可浏览的样本供你欣赏(ref-3): 定性的颜色序列: ? 众多内置顺序色标中的一部: ?...平行坐标允许你同时显示3个以上的连续变量dataframe 中的每一行都是一行。你可以拖动尺寸以重新排序它们选择范围之间的交叉点。 ?...在这里,在使用 Plotly Express 生成原始图形之后,我们使用 Plotly.py 的 API 来更改一些图例设置添加注释。...每个 Plotly Express 函数都体现dataframe 中行与单个或分组标记的清晰映射,具有图形启发的语法签名,可让你直接映射这些标记的变量,如 x 或 y 位置、颜色、大小、 facet-column...这种方法的强大之处在于它以相同的方式处理所有可视化变量:你可以将数据框列映射到颜色,然后通过更改参数来改变你的想法并将其映射到大小或进行行面(facet-row)。

    5K10

    这才是你寻寻觅觅想要的 Python 可视化神器!

    我们还提供一些功能来制作可浏览的样本供您欣赏(ref-3): 定性的颜色序列: ? 众多内置顺序色标中的一部: ?...平行坐标允许您同时显示3个以上的连续变量dataframe 中的每一行都是一行。 您可以拖动尺寸以重新排序它们选择范围之间的交叉点。 ?...在这里,在使用 Plotly Express 生成原始图形之后,我们使用 Plotly.py 的 API 来更改一些图例设置添加注释。...每个 Plotly Express 函数都体现dataframe 中行与单个或分组标记的清晰映射,具有图形启发的语法签名,可让您直接映射这些标记的变量,如 x 或 y 位置、颜色、大小、 facet-column...这种方法的强大之处在于它以相同的方式处理所有可视化变量:您可以将数据框列映射到颜色,然后通过更改参数来改变您的想法并将其映射到大小或进行行面(facet-row)。

    4.1K21

    直观地解释和可视化每个复杂的DataFrame操作

    Pandas提供各种各样的DataFrame操作,但是其中许多操作很复杂,而且似乎不太平易近人。本文介绍8种基本的DataFrame操作方法,它们涵盖了数据科学家需要知道的几乎所有操作功能。...原始DataFrame的状态围绕DataFrame的中心元素旋转到一个新元素。有些元素实际上是在旋转或变换的(例如,列“ bar ”),因此很重要。...我们选择一个ID,一个维度和一个包含的列/列。包含的列将转换为两列:一列用于变量列的名称),另一列用于变量中包含的数字)。 ?...Unstack 取消堆叠将获取多索引DataFrame对其进行堆叠,将指定级别的索引转换为具有相应的新DataFrame的列。在表上调用堆栈后再调用堆栈不会更改该堆栈(原因是存在“ 0 ”)。...作为另一个示例,当级别设置为0(第一个索引级别)时,其中的将成为列,而随后的索引级别(第二个索引级别)将成为转换后的DataFrame的索引。 ?

    13.3K20

    这才是你寻寻觅觅想要的 Python 可视化神器

    image.png 平行坐标允许您同时显示3个以上的连续变量dataframe 中的每一行都是一行。 您可以拖动尺寸以重新排序它们选择范围之间的交叉点。....update() 现在返回修改后的数字,所以你仍然可以在一个很长的 Python 语句中执行此操作: image.png 在这里,在使用 Plotly Express 生成原始图形之后,我们使用 Plotly.py...设计理念:为什么我们创建 Plotly Express ? 可视化数据有很多原因:有时您想要提供一些想法或结果,并且您希望对图表的每个方面施加很多控制,有时您希望快速查看两个变量之间的关系。...每个 Plotly Express 函数都体现dataframe 中行与单个或分组标记的清晰映射,具有图形启发的语法签名,可让您直接映射这些标记的变量,如 x 或 y 位置、颜色、大小、 facet-column...这种方法的强大之处在于它以相同的方式处理所有可视化变量:您可以将数据框列映射到颜色,然后通过更改参数来改变您的想法并将其映射到大小或进行行面(facet-row)。

    3.7K20

    强烈推荐一款Python可视化神器!

    我们还提供一些功能来制作可浏览的样本供您欣赏(ref-3): 定性的颜色序列: ? 众多内置顺序色标中的一部: ?...平行坐标允许您同时显示3个以上的连续变量dataframe 中的每一行都是一行。 您可以拖动尺寸以重新排序它们选择范围之间的交叉点。 ?...在这里,在使用 Plotly Express 生成原始图形之后,我们使用 Plotly.py 的 API 来更改一些图例设置添加注释。...每个 Plotly Express 函数都体现dataframe 中行与单个或分组标记的清晰映射,具有图形启发的语法签名,可让您直接映射这些标记的变量,如 x 或 y 位置、颜色、大小、 facet-column...这种方法的强大之处在于它以相同的方式处理所有可视化变量:您可以将数据框列映射到颜色,然后通过更改参数来改变您的想法并将其映射到大小或进行行面(facet-row)。

    4.4K30

    只需七步就能掌握Python数据准备

    Chloe表示,EDA通常涉及以下方法的组合: • 原始数据集中每个字段的单变量可视化和汇总统计信息。 • 用于评估数据集中每个变量与感兴趣目标变量之间的双变量可视化和评估的汇总统计。...• 多变量可视化理解数据中不同字段之间的交互 • 缩小尺寸以了解数据中的字段,这些字段占据观察之间的最大差异,允许处理数据量的减少。...• 使用缺少的数据,Pandas文档 • pandas.DataFrame.fillna,Pandas文档 有很多方法可以在Pandas DataFrame中完成填充缺失,并将其替换为所需的内容。...Pandas DataFrame中的异常值 Stack Overflow 步骤5:处理不平衡数据(Dealing with Imbalanced Data)   如果你的另一个强大的数据集缺少缺失和异常值是由两个类组成...你可以看看下面的一些初步的想法: • 将Pandas DataFrame转换为数组,评估多线性回归模型, Stack Overflow 非常简单的数据准备过程 有干净的数据,你还想在Python中进行机器学习

    1.6K71

    懂Excel就能轻松入门Python数据分析包pandas(十四):对比更新

    案例1 你千辛万苦整理了一份数据表,发给同事,几小时后,同事在表格中修改了某些单元格的,然后扔下一句话:麻烦你看看修改的对不对? - 此时你很想问一句:可以告诉哪些修改了?...上面给我一堆 bool ,有啥用?!...=",是"不等于"的意思 - df_mdf[cond] ,紧接着只要把那些"不等于"的结果放入"修改表",即可显示那些被修改的 案例3 你的同事喜欢给你"开玩笑",这次他发过来的数据表,不小心把人名的顺序打乱...pandas 当然不会让你失望: - 关键在最后一行,DataFrame.update() ,按传入的 DataFrame 作为标准,更新原始表 - 时刻谨记,一切按行列索引自动对齐 > 你会发现,即使是非常复杂的表头...因此,这案例中的列顺序有变化,同样可以完成操作 总结 - 注意 DataFrame 的行列索引,所有操作都自带索引对齐功能 - DataFrame.update ,能以另一个 DataFrame

    71620

    干货!机器学习中,如何优化数据性能

    Python中自身提供非常强大的数据存储结构:numpy库下的ndarry和pandas库下的DataFrame。...出于保证原始数据的一致性,DataFrame的大部分方法都会返回一个原始数据的拷贝,如果要将返回结果写回,用这种方式效率更高。 除非必须,避免使用逐行处理。...在继续讲解链式复制前,需要先了解pandas的方法有一部是返回的是输入数据的视图(view)一部返回的是输入数据的拷贝(copy),还有少部分是直接修改源数据。...如果开发人员想选取源数据的一部,修改其中某列的新的变量而不修改源数据,那么正常的写法就是无歧义的。 然而有些隐蔽的链式索引往往并不是简单的像上述情况那样,有可能跨越多行代码,甚至函数。...避免对有可能是视图的中间变量进行修改。 需要注意的是:DataFrame的索引操作到底是返回视图还是返回拷贝,取决于数据本身。

    76330

    0.052s 打开 100GB 数据,这个开源库火爆

    数据变为内存可映射格式后,即使在磁盘上的大小超过100GB,也可以使用Vaex即时打开(只需0.052秒!): 为什么这么快?当使用Vaex打开内存映射文件时,实际上没有进行任何数据读取。...打开数据集会生成一个标准的DataFrame对其进行快速检查: 注意,单元执行时间太短了。这是因为显示Vaex DataFrame或列仅需要从磁盘读取前后5行数据。...该describe方法很好地体现Vaex的功能和效率:所有这些统计数据都是在的MacBook Pro(2018款15英寸,2.6GHz Intel Core i7,32GB RAM)上用不到3钟的时间计算出来的...在筛选Vaex DataFrame时不会复制数据,而是仅创建对原始对象的引用,在该引用上应用二进制掩码。用掩码选择要显示的行,并将其用于将来的计算。...由于目前我们尚不了解这些行程是否合法,因此我们也将其过滤掉。 让我们对行程距离进行类似的练习。由于这是一个连续变量,因此我们可以绘制行程距离的分布图。让我们绘制一个更合理范围的直方图。

    80710

    0.052秒打开100GB数据?这个Python开源库这样做数据分析

    数据变为内存可映射格式后,即使在磁盘上的大小超过100GB,也可以使用Vaex即时打开(只需0.052秒!): ? 为什么这么快?当使用Vaex打开内存映射文件时,实际上没有进行任何数据读取。...打开数据集会生成一个标准的DataFrame对其进行快速检查: ? 注意,单元执行时间太短了。这是因为显示Vaex DataFrame或列仅需要从磁盘读取前后5行数据。...该describe方法很好地体现Vaex的功能和效率:所有这些统计数据都是在的MacBook Pro(2018款15英寸,2.6GHz Intel Core i7,32GB RAM)上用不到3钟的时间计算出来的...在筛选Vaex DataFrame时不会复制数据,而是仅创建对原始对象的引用,在该引用上应用二进制掩码。用掩码选择要显示的行,并将其用于将来的计算。...由于目前我们尚不了解这些行程是否合法,因此我们也将其过滤掉。 ? 让我们对行程距离进行类似的练习。由于这是一个连续变量,因此我们可以绘制行程距离的分布图。让我们绘制一个更合理范围的直方图。 ?

    1.3K20

    最近,又发现Pandas中三个好用的函数

    所以,对于一个DataFrame,我们可以方便的使用类似字典那样,根据一个列名作为key来获取对应的value,例如在上述DataFrame中: 当然,这是Pandas中再基础不过的知识,这里加以提及是为了引出...我们可以将其强制转化为一个列表,并进而得到如下结果: 那么,DataFrame的items方法与这里要讲的iteritems方法有什么关系呢?...首先来看函数的签名文档: 而后,仍以前述DataFrame为例,查看其返回结果: 这里仍然显式转化为list输出 结果不出所料:返回结果包含5个元组对,其中各元组的第一个为相应的行索引,第二个为对应行的...以此为基础,为了弥补iterrows中可能无法保留各行Series原始数据类型的问题,itertuples以namedtuple的形式返回各行,也以迭代器的形式返回,以便于高效遍历。...仍然来看函数签名文档: 而后,再看上述DataFrame调用itertuples后的返回结果: 其中,返回包含5个namedtuple,这里每个namedtuple都被命名为Pandas,这可以通过

    2K10

    懂Excel就能轻松入门Python数据分析包pandas(十四):对比更新

    案例1 你千辛万苦整理了一份数据表,发给同事,几小时后,同事在表格中修改了某些单元格的,然后扔下一句话:麻烦你看看修改的对不对? - 此时你很想问一句: 可以告诉哪些修改了?...上面给我一堆 bool ,有啥用?!...=",是"不等于"的意思 - df_mdf[cond] ,紧接着只要把那些"不等于"的结果放入"修改表",即可显示那些被修改的 案例3 你的同事喜欢给你"开玩笑",这次他发过来的数据表,不小心把人名的顺序打乱...pandas 当然不会让你失望: - 关键在最后一行,DataFrame.update() ,按传入的 DataFrame 作为标准,更新原始表 - 时刻谨记,一切按行列索引自动对齐 > 你会发现,即使是非常复杂的表头...因此,这案例中的列顺序有变化,同样可以完成操作 总结 - 注意 DataFrame 的行列索引,所有操作都自带索引对齐功能 - DataFrame.update ,能以另一个 DataFrame

    71810

    从零开始,教初学者如何征战全球最大机器学习竞赛社区Kaggle竞赛

    加载数据查看 DataFrame,可以发现数据集中的第一列是 Id,代表数据集中该行的索引,而不是真实观察。...然后为了生成新的观察,随机森林会简单地平均所有树的预测,并将其作为最终的预测返回。 现在我们所做的的就是构建许多弱分类器或弱决策树,然后取它们的平均值,为什么要这样做呢?...但我不擅长于统计,但我会尽可能地给出一个基本的解释:bootstrap 采样和特征子集可以使不同的决策树尽可能地去相关(即使它们仍然基于相同的数据集和特征集),这种去相关能允许每一棵树在数据中发现一些不同的关系...这个方法非常简单,让我们假设一个分类变量有 n 个可能。该列被分为 n 个列,每一列对应一个原始(相当于对每个原始的『is_value?』)。...说明 在将训练集和测试集分别加载进 DataFrame 之后,保存目标变量,并在 DataFrame 中删除它(因为只想保留 DataFrame 中的独立变量和特征)。

    842100
    领券