Как расширить Pandas с помощью пользовательских функций ввода-вывода? - PullRequest
0 голосов
/ 23 сентября 2018

Я написал несколько функций для чтения данных из пользовательского формата файла и преобразования их в фрейм данных pandas.Я хотел бы получить доступ к этому из пространства имен pandas, т.е. после установки пакета с помощью pip я смогу

import pandas as pd
pd.read_custom("/my/file")

Мои вопросы:

  1. Это вообще возможно?
  2. Как бы я это реализовал?

PS: Я помню, что поддержка панд для пера работала до тех пор, пока он официально не стал частью pandas.io.Я не могу найти код для этого сейчас.

1 Ответ

0 голосов
/ 23 сентября 2018

Просто создайте свой собственный класс, который должен наследоваться от класса DataFrame, и реализуйте метод to_custom().

Простой пример:

class MyDF(pd.DataFrame):
    def to_custom(self, filename, **kwargs):
        # put your deserializer code here ...
        return self.to_csv(filename, **kwargs)

Тест:

In [16]: df = pd.DataFrame(np.arange(9).reshape(3,3), columns=list('abc'))

In [17]: mdf = MyDF(df)

In [18]: type(mdf)
Out[18]: __main__.MyDF

In [19]: mdf.to_custom('d:/temp/res.csv', index=False)

Результат:

In [20]: from pathlib import Path

In [21]: print(Path('d:/temp/res.csv').read_text())
a,b,c
0,1,2
3,4,5
6,7,8
...