Агрегировать строки на основе значений столбцов панд - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть данные в этом формате:

Company     Region  Category    Metric    Year  Month   Value
Industry    Total   NARTD   Sales Value   2017  Jan     1.448129e+09
Industry    Total   NARTD   Sales Volume  2017  Jan     3.573664e+08
Industry    Total   NARTD   Sales Value   2018  Jan     1.422279e+09
Industry    Total   NARTD   Sales Volume  2018  Jan     3.492432e+08

И я хочу добавить еще один столбец в конце со значением продаж / объемом продаж для каждой строки с такими же данными других столбцов, кроме года.Агрегирование должно быть выполнено для того же года, того же объема продаж и того же года.

выход:

Company     Region  Category    Metric    Year  Month   Value         AVG
Industry    Total   NARTD   Sales Value   2017  Jan     1.448129e+09  Sal.val(2017)/Sal.Vol(2017)
Industry    Total   NARTD   Sales Volume  2017  Jan     3.573664e+08  Sal.val(2017)/Sal.Vol(2017)
Industry    Total   NARTD   Sales Value   2018  Jan     1.422279e+09  Sal.val(2018)/Sal.Vol(2018)
Industry    Total   NARTD   Sales Volume  2018  Jan     3.492432e+08  Sal.val(2018)/Sal.Vol(2018)

Дело

Region  Category    Company     Metric      Year    Month   Value
Convenience     NARTD   TCC     Sales Value 2018    Dec     NaN
Traditional     NARTD   TCC     Sales Value 2018    Dec     NaN
Total           NARTD   TCC     Sales Value 2018    Dec     NaN
Hyper/Super     NARTD   TCC     Sales Value 2018    Dec     NaN

1 Ответ

0 голосов
/ 30 ноября 2018

IIUC, проще всего сначала развернуть все значения в год в одном ряду, затем разделить, а затем расплавить, чтобы изменить исходный кадр:

piv = df.pivot_table(index=['Company', 'Region', 'Category', 
              'Year', 'Month'], columns=['Metric'], values='Value').reset_index()
piv['AVG'] = piv['SalesValue'] / piv['SalesVolume']

piv.melt(id_vars=['Company', 'Region', 'Category', 
              'Year', 'Month', 'AVG'])

#     Company Region Category      ...            AVG       Metric         value
# 0  Industry  Total    NARTD      ...       4.052225   SalesValue  1.448129e+09
# 1  Industry  Total    NARTD      ...       4.072460   SalesValue  1.422279e+09
# 2  Industry  Total    NARTD      ...       4.052225  SalesVolume  3.573664e+08
# 3  Industry  Total    NARTD      ...       4.072460  SalesVolume  3.492432e+08
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...