为了账号安全,请及时绑定邮箱和手机立即绑定

自定义转换器 Python

自定义转换器 Python

jeck猫 2022-10-06 20:01:33
我在创建适用于 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()


查看完整回答
反对 回复 2022-10-06
  • 1 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号