Python pandas.DataFrame:inplace=True与指定相同变量之间的差异?

Python pandas.DataFrame:inplace=True与指定相同变量之间的差异?,python,pandas,function,variable-assignment,in-place,Python,Pandas,Function,Variable Assignment,In Place,我正在熊猫数据框内用np.nan替换-np.inf和np.inf 但是,使用inplace=True,我得到一个警告: df.replace([np.inf, -np.inf], np.nan, inplace = True) SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame 尽管只是将变量重新分配给自身(不确定这是否是一个明智的想法),但这似乎“解决”了问题:

我正在熊猫数据框内用
np.nan
替换
-np.inf
np.inf

但是,使用inplace=True,我得到一个警告:

df.replace([np.inf, -np.inf], np.nan, inplace = True)

SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
尽管只是将变量重新分配给自身(不确定这是否是一个明智的想法),但这似乎“解决”了问题:

df = df.replace([np.inf, -np.inf], np.nan)
我在另一个问题中读到python区分副本和视图,如果不清楚,修改一个变量也会影响另一个变量

是否应限制使用
就地

正如背景:我有一个包含股票价格的数据框架,但是缺少价值。我有一个使用此数据帧的函数,但在处理之前会“清理”数据

def func(df):
   df_aux = df.dropna(axis = 1)
   df_aux.replace([np.inf, -np.inf], np.nan, inplace = True)
   df_aux.fillna(method = 'ffill', inplace = True)

   some calculation with df_aux

   return x
你需要:


如果您稍后修改
df_aux
中的值,您会发现修改不会传播回原始数据
df
,并且熊猫会发出警告。

jezrael的答案只是假设您要复制,从而使警告静音

如果您希望修改而不是复制,则使用
in place
是有效的,但您需要始终如一地使用它以避免警告:

def func(df):
   df.dropna(axis = 1, inplace=True)
   df.replace([np.inf, -np.inf], np.nan, inplace=True)
   df.fillna(method = 'ffill', inplace=True)

   # some calculation with df

   return x
def func(df):
   df.dropna(axis = 1, inplace=True)
   df.replace([np.inf, -np.inf], np.nan, inplace=True)
   df.fillna(method = 'ffill', inplace=True)

   # some calculation with df

   return x