带有 inplace=True 的 Pandas fillna 更改了所有等于它应该操作的数据帧 [重复]
Posted
技术标签:
【中文标题】带有 inplace=True 的 Pandas fillna 更改了所有等于它应该操作的数据帧 [重复]【英文标题】:Pandas fillna with inplace=True changes all dataframes that are equal to the one that it is supposed to operate on [duplicate] 【发布时间】:2018-10-06 13:01:48 【问题描述】:import numpy as np
import pandas as pd
df = pd.DataFrame([[np.nan, 2, 1, 0],
[3, 4, np.nan, 1],
[np.nan, np.nan, 8, 5],
[np.nan, 3, np.nan, 4]],
columns=list('ABCD'))
df2 = df
df.fillna(value = df.mean(), inplace=True)
现在 df2 和 df 是相同的。 如何避免更改 df2?
【问题讨论】:
Python 中的赋值语句不会复制对象,它们会在目标和对象之间创建绑定。检查这个。 ***.com/questions/21537078/… 【参考方案1】:感谢您的回复。总而言之,inplace=True 将修改对象上的任何其他视图。 在我的示例中,为避免修改 df2,我应该使用 df2 = df.copy() 代替 df2 = df
【讨论】:
【参考方案2】:您正在“指向”df2
指向 df
指向的对象。因此,它们将是相同的。
(以下来自Python docs)。
Python 中的赋值语句不会复制对象,它们会在目标和对象之间创建绑定。对于可变集合或包含可变项的集合,有时需要一个副本,以便可以更改一个副本而不更改另一个副本。
要复制数据框,请执行以下操作:df2 = df.copy();
【讨论】:
【参考方案3】:考虑使用copy
方法复制df
:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.copy.html
【讨论】:
以上是关于带有 inplace=True 的 Pandas fillna 更改了所有等于它应该操作的数据帧 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Pandas DataFrame 替换不适用于 inplace=True
pandas .set_index(“TIMESTAMP“, inplace=True) 用法
pandas .set_index(“TIMESTAMP“, inplace=True) 用法
pandas .set_index(“TIMESTAMP“, inplace=True) 用法
Pandas DataFrame:set_index with inplace=True 返回 NoneType,为啥?