在写特征工程的函数时使用 df.copy() 是多余的吗?

Is it redundant to use df.copy() when writing a function for feature engineering?

我想知道写这个模式是否有任何好处

def feature_eng(df):
  df1 = df.copy()
  ...
  return df1

与此模式相反

def feature_eng(df):
  ...
  return df

假设您有一个原始数据帧 df_raw 并且您使用 feature_eng 创建了 df_feature。当调用 df_feature = feature_eng(df_raw) 时,您的第二种方法将覆盖 df_raw,而第一种方法不会。因此,如果您想保持 df_raw 不变而不修改它,第一个模式将导致正确的结果。

一个小例子:

def feature_eng1(df):
    df.drop(columns=['INDEX'], inplace=True)
    return df

def feature_eng2(df):
    df1 = df.copy()
    df1.drop(columns=['INDEX'], inplace=True)
    return df1

df_feature = feature_eng1(df_raw)

此处 df_raw 将不包含 INDEX 列,而使用 feature_eng2 则会。