Я создаю объект типа базы данных, который, когда индекс не найден, использует api для извлечения информации, сохраняет ее в объект/файл и возвращает ее.Перегрузка в python - pandas
Я хотел бы сделать это, перегрузив метод pandas DataFrame .loc[x, y]
, но я не могу решить, как это сделать!
На данный момент у меня есть:
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 не метод, а свойство, которое затем, в свою очередь имеет свой собственный метод GET. Так что ответ на этот вопрос сложный. – mdurant
Нет, я не вижу. Я не могу найти ничего полезного в '.loc' int docs или в основных файлах. – Lucidnonsense
Как я понимаю, просто использовать "?" консоли ipython. В любом случае это уже в синтаксисе: метод thing.do(); но свойство/атрибут выглядит как вещь. Еще и все в конце этого действия на свойство. 'pd.core.indexing._LocationIndexer' и его производные имеют некоторые методы get, которые действуют на loc.obj, поэтому у вас есть тот, который выбран для вашего фрейма данных, подкласса и перегружает получателя. – mdurant