pandas range (1, 4) векторизовать тело - PullRequest
0 голосов
/ 08 мая 2020

Это мой код (это домашнее задание - анализ данных о выживших титани c):

for Pclass in range(1, 4):
    select_df = df.loc[df["Pclass"] == Pclass, col]
    x_min = select_df.min()
    x_max = select_df.max()
    # possible ZeroDivisionError error if x_max = x_min
    df.loc[df["Pclass"] == Pclass, col] = (select_df - x_min) / (x_max - x_min)

PClass - один из столбцов с целыми значениями 1, 2 и 3.

Мой вопрос - как это сделать без for l oop? Без трех последовательных копий?

1 Ответ

0 голосов
/ 08 мая 2020

Мой учитель ответил:

Определите дополнительную функцию для выполнения вычислений:

def f_normalisation(df, col):
    select_df = df.loc[:, col]
    x_min = select_df.min()
    x_max = select_df.max()
    # possible ZeroDivisionError error if x_max = x_min
    df.loc[:, col] = (select_df - x_min) / (x_max - x_min)
    return df

Затем примените функцию к фрейму данных, сгруппированному по PClass.

df.groupby("Pclass").apply(f_normalisation, col=col)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...