Как добавить новые столбцы в сводную таблицу, используя pandas - PullRequest
1 голос
/ 18 июня 2020

Я пытаюсь создать новый столбец, который показывает вес каждого продукта, который у меня есть.

Допустим, у меня есть следующий фрейм данных, который у меня есть: используя

 pd.pivot_table(data = df, index = ['PRODUCT'], 
                  values = ("UNIT_TESTED","AVG_YIELD"), 
                  aggfunc = "sum", margins=True)\
     .fillna('')

Теперь я хочу добавить новый столбец WEIGHTAGE для каждого продукта.

Расчет:

ВЕС 'A' = (UNIT_TESTED 'A' / Всего UNIT_TESTED) * 100

Вот где я застрял, чтобы ввести в код для создания нового столбца.

Мой желаемый результат:

PRODUCT UNIT_TESTED AVG_YIELD WEIGHTAGE
    A       401      82.1042    17.1441
    B      1512      96.0687    64.6430
    C       292      22.7806    12.4840
    D       134      37.0088    5.7289

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Последняя строка полученной вами сводной таблицы содержит сумму протестированных единиц. Таким образом, вы можете просто разделить на это значение (pivot_df.loc["All","UNIT_TESTED"]) столбец UNIT_TESTED:

pivot_df = pd.pivot_table(data = df, index = ['PRODUCT'], 
                  values = ("UNIT_TESTED","AVG_YIELD"), 
                  aggfunc = "sum", margins=True)\
     .fillna('')

pivot_df["Weightage"] = round((pivot_df["UNIT_TESTED"] / pivot_df.loc["All","UNIT_TESTED"])*100,2)

print(pivot_df)

Вывод:

    AVG_YIELD   UNIT_TESTED Weightage
PRODUCT         
A   82.1042     401        17.14
B   96.0687     1512       64.64
C   22.7806     292        12.48
D   37.0080     134        5.73
All 237.9615    2339       100.00
0 голосов
/ 18 июня 2020

предположим, ваша сводная таблица - pivot_df

pivot_df['WEIGHTAGE'] = (pivot_df['UNIT_TESTED'] * 100 ) / pivot_df['UNIT_TESTED'].sum()
...