我正在寻找在pandas.DataFrame中添加一个属性函数。但是,使用它时,我不断收到错误AttributeError: 'DataFrame' object has no attribute 'sayHello'
。
这就是我扩展课程的方式:
import pandas as pd
class pd(pd.DataFrame):
@property
def sayHello(self):
print('hello')
我在做什么错了?
答案 0 :(得分:1)
我无法重现该错误,所以我猜想这是由于您如何调用sayHello方法所致。很有可能,您尝试调用sayHello
的对象不是您创建的类。
import pandas as pd
class Your_pd_class(pd.DataFrame):
@property
def sayHello(self):
print('hello')
x = Your_pd_class()
x.sayHello
上面的代码段将在输出中显示“ hello”。
请注意两件事:
pd
的名称更改为your_pd_class
。我建议您给它起一个您可以记住的名称,但不要使用同一程序中使用的另一个模块已经使用的名称。x
被创建为Your_pd_class
,如果创建变量x = pd.DataFrame()
,则x
将属于dataframe类,并且会出现错误你得到了。您的代码可能就是这种情况。如果要使用扩展的pd
类,则应将其创建为Your_pd_class
而不是pd.DataFrame
。我希望这会有所帮助。
“扩展” pd.DataFrame
类的技巧是将所有pd.DataFrame
引用到Your_pd_class
:
import pandas as pd
class Your_pd_class(pd.DataFrame):
@property
def sayHello(self):
print('hello')
pd.DataFrame = Your_pd_class
x = pd.DataFrame()
x.sayHello