【发布时间】:2018-09-27 12:26:14
【问题描述】:
我在 pandas 数据框中将 -np.inf 和 np.inf 替换为 np.nan。
但是,使用 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 区分副本和视图,如果不清楚以某种方式修改一个变量也会影响另一个变量。
应该避免使用inplace?
就像背景一样:我有一个包含股票价格的数据框,但是缺少值。我有一个使用这个数据框的函数,但在处理之前“清理”了数据。
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
【问题讨论】:
标签: python pandas function variable-assignment in-place