Как создать несколько экземпляров класса из Pandas DataFrame? - PullRequest
0 голосов
/ 05 августа 2020

Я начал работу над проектом, в котором я хочу создать уникальные тренировочные программы для спортсменов, которые принимали участие в тренировках, которые у меня были. Эти спортсмены хранятся в файле .csv в столбце [BIB #]. Для каждого из этих спортсменов я хочу создать файл Excel с несколькими листами (по одному листу для каждого спортсмена).

В этом проекте я буду развивать много других функций, связанных с тренировками, поэтому я подумал Было бы неплохо создать класс и экземпляры этого класса (на основе спортсменов, принимавших участие в тренировке). Поэтому я написал несколько функций, которые находят уникальные значения в столбце DataFrame, создают экземпляры их классов (хранятся в словаре), а затем генерируют файл Excel с расширением. Код работает нормально, но есть ли способ лучше sh выполнить эту задачу? Я новичок в Python, поэтому ценю отзывы.

import pandas as pd

# Class used for testing
class Lageutover:
    def __init__(self, bib):
        self.bib = bib

#The path to the .csv file.
path = "/Users/cmagelssen/Desktop/testing/data/pilot1.csv"
#This creates a Pandas DataFrame
df = pd.read_csv(path, skiprows=2, decimal=".")
#I have used pandas pipe() to pipe many functions. The result is a new DataFrame
df = df.pipe(Trening.dnfCountandReplace, LagreCsv=True)\
    .pipe(Trening.changeDataType)\
    .pipe(Trening.renameCommentToCourse)\
    .pipe(Trening.groupData)\

#This function first creates a list object with each unique value in a column of a DataFrame
#Then, for each unique value, it creates a dictionary, and at the same time creates an instance of a class, for each unique value
def createDict(df):
    uniqueAthletes = [n for n in df['BIB#'].unique()]
    global bibNumber
    bibNumber = {bibNumber: Lageutover(bibNumber) for bibNumber in uniqueAthletes}

#This function creates a training protocol for each BiBnumber
def lagExcelFiler():
    with pd.ExcelWriter('index.xlsx') as writer:
        for key in bibNumber.keys():
            dataramme = Utovere.allokeringRandom()
            df = dataramme
            df.to_excel(writer, sheet_name=str(key))

createDict(df)
lagExcelFiler()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...