Как сгруппировать по нескольким столбцам и разбить стек, чтобы получить процент каждой ячейки, разделив от общей суммы строки на Python? - PullRequest
0 голосов
/ 07 мая 2020

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

rpt_period_name_week    period_name_mth assigned_date_utc   resolved_date_utc   handle_seconds  action  marketplace_id  login   category    currency_code   order_amount_in_usd day_of_week_NewClmn
2020 Week 01    2020 / 01   1/11/2020 23:58 1/11/2020 23:59 84  Pass    DE  a   MRI AT  EUR 81.32   Saturday
2020 Week 02    2020 / 01   1/11/2020 23:58 1/11/2020 23:59 37  Pass    DE  b   MRI AQ  EUR 222.38  Saturday
2020 Week 01    2020 / 01   1/11/2020 23:57 1/11/2020 23:59 123 Pass    DE  a   MRI DG  EUR 444.77  Saturday
2020 Week 02    2020 / 01   1/11/2020 23:54 1/11/2020 23:59 313 Hold    JP  a   MRI AQ          Saturday
2020 Week 01    2020 / 01   1/11/2020 23:57 1/11/2020 23:59 112 Pass    FR  b   MRI DG  EUR 582.53  Saturday
2020 Week 02    2020 / 01   1/11/2020 23:54 1/11/2020 23:58 249 Pass    DE  f   MRI AT  EUR 443.16  Saturday
2020 Week 03    2020 / 01   1/11/2020 23:58 1/11/2020 23:58 48  Pass    DE  b   MRI DG  EUR 20.5    Saturday
2020 Week 03    2020 / 01   1/11/2020 23:57 1/11/2020 23:58 40  Pass    IT  a   MRI AQ  EUR 272.01  Saturday

мой желаемый результат похож на

[Output][1]
https://i.stack.imgur.com/8oz7G.png

Мой код ниже, но я не могу получить желаемый результат? Мои ячейки делятся на сумму строк? Пробовали несколько вариантов, но тщетно?

df = data_final.groupby(['login','category','rpt_period_name_week','action'])['action'].agg(np.count_nonzero).unstack(['rpt_period_name_week','action']).apply(lambda x: x.fillna(0))
df = df.div(df.sum(1), 0).mul(100).round(2).assign(Total=lambda df: df.sum(axis=1))
# df = df.div(df.sum(1), 0).mul(100).round(2).assign(Total=lambda df: df.sum(axis=1))
df1 = df.astype(str) + '%'
# print (df1)

Помогите, пожалуйста?

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