如何在自定义类中模拟pandas.DataFrame索引?

时间:2018-05-01 21:48:35

标签: python pandas dataframe

我想定义一个不从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])

1 个答案:

答案 0 :(得分:1)

它可能无法捕获DataFrame的所有行为,但对于初学者,您可以实现__getattr__或更高风险的__getattribute__来将属性请求传递给基础数据框:

class FalseDF:
    def __getattr__(self, key):
        return getattr(self.df, key)