Как ускорить функцию в pandas - PullRequest
0 голосов
/ 22 апреля 2020

Ищите некоторые возможности для ускорения этого процесса. Я использую его для построения иерархии до 20 уровней. Поэтому я вызываю эту функцию в кадре данных и сообщаю ей, какие столбцы нужно просмотреть. Мой фрейм данных немного различается по длине, но обычно он имеет ширину 150 столбцов. Вызов этой функции 15 раз (чтобы «подняться в иерархию») для 30 тыс. Записей занимает около 45 минут (это очень медленно в первых нескольких столбцах, которые она просматривает). Я предполагаю использовать эту функцию для кадра данных длиной около 400 Кб, и я хочу ускорить этот процесс, если это возможно.

В двух словах, Мой Dataframe должен был уже собрать всех, кто необходим для построения иерархии, и затем я возвращаю уникальный список идентификаторов Supervisor ID. Затем эта функция помещает c в эти идентификаторы в указанном столбце (SupervisorColumnToReview) и определяет идентификатор, которому они сообщают, и помещает его в другой указанный столбец (ColumnToCreate). Тогда я просто вызываю это снова на вновь созданной колонке.

Заранее спасибо!


def LookUpSupervisor(SampleDataFrame,SupervisorColumnToReview,ColumnToCreate):
    ColumnToReview = SupervisorColumnToReview

    print(ColumnToReview)
    SupervisorList=SampleDataFrame[ColumnToReview].unique().tolist()
    for Supervisor in SupervisorList:
        try:
            SampleDataFrame.loc[(SampleDataFrame[ColumnToReview] == Supervisor),ColumnToCreate] = SampleDataFrame.loc[SampleDataFrame['Employee ID'] == Supervisor,'Supervisor ID'].iloc[0]

        except:
            SampleDataFrame.loc[(SampleDataFrame[ColumnToReview] == Supervisor),ColumnToCreate] = "Supervisor ID Not Found"
    SampleDataFrame[ColumnToCreate] = SampleDataFrame[ColumnToCreate].astype(str)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...