我想定义一个不从pandas.DataFrame
继承的类,但有时会像它一样。例如,我可以这样做:
import pandas
import numpy
class FalseDF(object):
def __init__(self, df):
self.df = df
def __getitem__(self, item):
return self.df.__getitem__(item)
df = pandas.DataFrame(numpy.reshape(numpy.arange(10), (2, 5)))
print(df)
给出:
0 1 2 3 4
0 0 1 2 3 4
1 5 6 7 8 9
现在:
fdf = FalseDF(df)
print(fdf[3])
给出:
0 3
1 8
Name: 3, dtype: int64
我现在如何使以下语法也有效?
print(fdf.iloc[1])
或
print(fdf.loc[2])
答案 0 :(得分:1)
它可能无法捕获DataFrame
的所有行为,但对于初学者,您可以实现__getattr__
或更高风险的__getattribute__
来将属性请求传递给基础数据框:
class FalseDF:
def __getattr__(self, key):
return getattr(self.df, key)