python - 编辑其副本时 Pandas DataFrame 中的意外转换
问题描述
我有df
具有不同类型列的 pandas DataFrame,其中一些值为df
NaN。
为了测试一些假设,我创建了 df 的副本df
,并使用 pandas.isnull() 将复制的 df 转换为 (0, 1):
df_copy = df
for column in df_copy:
df_copy[column] = df_copy[column].isnull().astype(int)
但在那之后,两者都由 0df
和df_copy
1 组成。为什么这段代码会转换df
为 0、1,有没有办法阻止它?
解决方案
您可以阻止它声明:
df_copy = df.copy()
这将创建一个新对象。在此之前,您基本上有两个指向同一个对象的指针。您可能还想检查这个答案并注意 DataFrames 是可变的。
顺便说一句,您只需通过以下方式即可获得所需的结果:
df_copy = df.isnull().astype(int)