我在創建適用于 pandas 數據框的自定義轉換時遇到問題class attributeAdder(BaseEstimator,TransformerMixin): def __init__(self, add_target = True): self.add_target = add_target def fit(self, X, y=None): return self def transform(self, X) : if self.add_target: X["failed"]=X["failures"].apply(lambda x: 0 if x==0 else 1) X.drop(columns=["failures"],inplace=True) return Xatt_adder=attributeAdder()df=attributeAdder.transform(df) df.head()我得到這個錯誤TypeError Traceback (most recent call last)<ipython-input-117-cc8d4ad8702f> in <module> 14 15 att_adder=attributeAdder()---> 16 df=attributeAdder.transform(df) 17 df.head() 18 TypeError: transform() missing 1 required positional argument: 'X'有誰知道這段代碼有什么問題?謝謝
1 回答

楊__羊羊
TA貢獻1943條經驗 獲得超7個贊
問題是您使用attributeAdder該類創建一個對象att_adder,但沒有將此對象與數據框一起使用。只需替換attributeAdder.transform(df)為 att_adder.transform(df)即可解決問題。
有用:
import pandas as pd
class attributeAdder:
def __init__(self, add_target = True):
self.add_target = add_target
def fit(self, X, y=None):
return self
def transform(self, X):
if self.add_target:
X["failed"]=X["failures"].apply(lambda x: "No" if x==0 else "Yes")
X.drop(columns=["failures"],inplace=True)
return X
df = pd.DataFrame({"failures":[0, 1, 1, 0]})
att_adder=attributeAdder()
df=att_adder.transform(df)
df.head()
添加回答
舉報
0/150
提交
取消