python中的重载-Pandas

露西德废话

我正在构建一个数据库类型的对象,当找不到索引时,该对象使用api来检索信息,将其保存到对象/文件中并返回它。

我想通过重载.loc[x, y]pandas DataFrame方法来做到这一点,但我不知道如何做到这一点!

目前,我有:

import pandas as pd
pd.set_option('io.hdf.default_format','table')

class DataBase(pd.DataFrame):
    """DataBase Object which can be updated by external api"""
    def __init__(self, path, api=None):
        super(DataBase, self).__init__(pd.read_hdf('store.h5','df'))
        self.api = api

我可能想更改该__init__函数以包含一个where参数,以便我只能阅读需要的内容。

我想不出一种方法来.loc适当地重载该方法!

另外,hdf5只是一种方法。我想保留使用任何其他存储方法(如sql,甚至在必要时使用csv)的功能

沙丘

loc是一个创建的属性,_loc如果没有创建,则返回一个名为的名称,None否则将创建一个pandas.core.indexing._LocIndexer按需的名称。默认情况下,索引器可以访问创建它们的数据框,因此您可以在未命中键时修改数据框。

您可以DataFrame.loc通过子类化DataFrame_LocIndexeras来覆盖的行为

class MyLocIndexer(_LocIndexer):    
    def __getitem__(self, key):
        try:                   
            return super().__getitem__(key)
        except KeyError:
            item = db.fetch_item(key)
            self[key] = item
            return item
            # `return self[key]' is better as it also works when accessing a 
            # whole axis

class MyDataFrame(DataFrame):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self._loc = MyLocIndexer(self, "loc")

上面的代码是用python3编写的,因此如果您使用的是python2,则必须修复super语句。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

python中的重载-熊猫

来自分类Dev

Python中的方法重载:更多重载

来自分类Dev

python Pandas中的if语句

来自分类Dev

__getitem__ python中的重载

来自分类Dev

python中的部分函数重载

来自分类Dev

Python(Pandas)中的DataFrames的DataFrame

来自分类Dev

应用并分组在Pandas python中

来自分类Dev

Python + Pandas中的差异差异

来自分类Dev

Pandas Python中的分组处理

来自分类Dev

Python Pandas中的时间格式

来自分类Dev

Python Pandas中的DataFrame转换

来自分类Dev

了解Python Pandas中的groupby()

来自分类Dev

Pandas Dataframe 中的 Python 过滤

来自分类Dev

在 Pandas/python 中编写函数

来自分类Dev

Pandas Python 中的堆叠直方图

来自分类Dev

在Python中重载或重写了str()函数

来自分类Dev

在python中重载unittest.testcase

来自分类Dev

如何在python中重载内置模块?

来自分类Dev

Python中重载的构造方法的要点?

来自分类Dev

如何在Python中动态重载函数?

来自分类Dev

如何在Python中动态重载函数?

来自分类Dev

Fillna在Python Pandas中的多列中

来自分类Dev

Python Pandas中DataFrame中的值聚合?

来自分类Dev

Python Pandas中的DataFrame中的日期操作?

来自分类Dev

pandas 如何在 python pandas 中实现这个 SQL 语法

来自分类Dev

python pandas改组索引中的内存泄漏

来自分类Dev

python pandas中的R dcast等效项

来自分类常见问题

相当于JavaScript中的Python Pandas

来自分类Dev

用python中的pandas排序系列