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])
解决方案
它可能无法捕获 a 的所有行为DataFrame
,但对于初学者来说,您可以实现__getattr__
,或者更冒险的是,__getattribute__
将属性请求传递给底层数据框:
class FalseDF:
def __getattr__(self, key):
return getattr(self.df, key)
推荐阅读
- java - java.util.stream.Collectors.toMap() 的值函数返回常量值
- java - 如何使用 Date today = new Date() 将日期时间从 java 设置为 sql;
- javascript - 尝试通过 paypal api 创建付款时如何解决响应:{type: "cors"}
- java - 按对象属性分组
- reactjs - 反向代理到静态网站不起作用
- python - 围绕 Flask SqlAlchemy 查询简化一对 if-else 语句
- c# - 在 Visual Studio 2019 中的 Xamarin 中捕获 Xaml 错误的最佳方法是什么?
- jsf - 如何在 p:calendar 中将滑块/选择器初始值设置为“值”?
- c# - SqlDataReader - 使用所有匹配项填充子列表
- javascript - 使用ajax发送ip和接收位置