我在创建适用于 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
提交
取消