首页 > 解决方案 > 编辑其副本时 Pandas DataFrame 中的意外转换

问题描述

我有df具有不同类型列的 pandas DataFrame,其中一些值为dfNaN。

为了测试一些假设,我创建了 df 的副本df,并使用 pandas.isnull() 将复制的 df 转换为 (0, 1):

df_copy = df
for column in df_copy:
    df_copy[column] = df_copy[column].isnull().astype(int)

但在那之后,两者都由 0dfdf_copy1 组成。为什么这段代码会转换df为 0、1,有没有办法阻止它?

标签: pythonpandas

解决方案


您可以阻止它声明:

df_copy = df.copy()

这将创建一个新对象。在此之前,您基本上有两个指向同一个对象的指针。您可能还想检查这个答案并注意 DataFrames 是可变的。

顺便说一句,您只需通过以下方式即可获得所需的结果:

df_copy = df.isnull().astype(int)

推荐阅读