在写特征工程的函数时使用 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
则会。
我想知道写这个模式是否有任何好处
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
则会。