Python 变量,在 Jupyter notebook 中,尽管没有进一步操作,但已修改
Python variable, in a Jupyter notebook, modified despite no further action to it
我不打算分享直接代码,因为我觉得它的长度会阻碍任何人对我的主要问题的分析(尽管如果绝对需要我可以分享它)。最好总结一下。
笼统地说,在之前的单元格中,我建立了一个 pandas 数据框 - 假设我们在这里称之为 original_df。在下一个单元格中,我初始化了一个新变量 temp_df = original_df 以便我可以在保持原始数据帧完好无损的情况下操作相同的数据。在接下来的代码中,我从来没有以任何方式分配任何东西,甚至没有使用 original_df,但是当我完成操作 temp_df 和我需要的一样多...随后检查 original_df 表明它已经以与 相同的方式发生了变化temp_df 做到了。
知道为什么会发生这种情况吗?也许是某种环境问题?重新 运行 创建 original_df 的每个代码单元相当不方便,将所有代码放在一个单元中会否定使用 a 的全部意义Jupyter Notebook(沿途提供视觉效果)。我发现这一切都在发生,这非常奇怪,但是有什么方法可以在 original_df 变量上明确强制“冻结”,而它的 temp_df复制被操纵?
您可以尝试使用库副本来复制数据框
import copy
temp_df = copy.copy(original_df)
temp_df = original_df
仅创建对 original_df
.
的新引用
您需要在原始数据帧上调用 copy()
:temp_df = original_df.copy()
以创建新数据帧。
更多信息在这里:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.copy.html
我不打算分享直接代码,因为我觉得它的长度会阻碍任何人对我的主要问题的分析(尽管如果绝对需要我可以分享它)。最好总结一下。
笼统地说,在之前的单元格中,我建立了一个 pandas 数据框 - 假设我们在这里称之为 original_df。在下一个单元格中,我初始化了一个新变量 temp_df = original_df 以便我可以在保持原始数据帧完好无损的情况下操作相同的数据。在接下来的代码中,我从来没有以任何方式分配任何东西,甚至没有使用 original_df,但是当我完成操作 temp_df 和我需要的一样多...随后检查 original_df 表明它已经以与 相同的方式发生了变化temp_df 做到了。
知道为什么会发生这种情况吗?也许是某种环境问题?重新 运行 创建 original_df 的每个代码单元相当不方便,将所有代码放在一个单元中会否定使用 a 的全部意义Jupyter Notebook(沿途提供视觉效果)。我发现这一切都在发生,这非常奇怪,但是有什么方法可以在 original_df 变量上明确强制“冻结”,而它的 temp_df复制被操纵?
您可以尝试使用库副本来复制数据框
import copy
temp_df = copy.copy(original_df)
temp_df = original_df
仅创建对 original_df
.
您需要在原始数据帧上调用 copy()
:temp_df = original_df.copy()
以创建新数据帧。
更多信息在这里:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.copy.html