Наследование и "супер" с pandas dataframe - PullRequest
0 голосов
/ 17 июня 2020

Мне сложно понять, как правильно использовать здесь inheritance и правильно спроектировать мою программу.

Я попытался максимально упростить свой код. Итак, я получаю pandas фреймов данных, и для каждой строки я создаю сообщение XML для конечной точки API. У меня есть следующий код:

class Parse:

    def __init__(self, row):
        self.row = row

    def parse_header(self):
        header = f'''<header>
            <period>{self.row['year_period']}</period>
            <date>{self.row['date_text']}</date>
        </header>'''

        return header


class Prep(Parse):

    def __init__(self, data, file_name):

        super().__init__()
        self.data = data
        self.file_dir = os.path.join('data', 'raw')
        self.file_name = file_name

    def create_line(self):
        self.data['line_xml'] = self.data.apply(lambda x: self.parse_header(x), axis=1)

        return self.data

Что усложняет то, что Parse работает с каждой строкой фрейма данных и получает scalar значений. В то время как Prep работает со всем фреймом данных / столбцами.

Итак, я застрял на super().init, что я должен указать здесь в качестве аргумента, потому что прямо сейчас self.parse_header в Prep не принимает никаких аргументов.

Я открыт для совершенно другого дизайна, если это не способ go.

...