Pandas создает список рассылки % и # в порядке убывания для каждой группы.Python

Программы на Python
Anonymous
Pandas создает список рассылки % и # в порядке убывания для каждой группы.

Сообщение Anonymous »

У меня есть кадр данных pandas, как показано ниже

Код: Выделить всё

data = {
'cust_id': ['abc', 'abc', 'abc', 'abc', 'abc', 'abc', 'abc', 'abc', 'abc', 'abc'],
'product_id': [12, 12, 12, 12, 12, 12, 12, 12, 12, 12],
'purchase_country': ['India', 'India', 'India', 'Australia', 'Australia', 'Australia', 'Australia', 'Australia', 'Australia', 'Australia']
}
df = pd.DataFrame(data)
Моя цель — сделать следующее для каждой группы cust_id и Product_id.
а) создать два выходных столбца — «pct_region_split» и «num_region_split».
b) Для «pct_region_split» — сохраните процент разделения по странам. Например: для конкретной группы, показанной в выборочных данных, Австралия – 70 % (7 из 10 – 70 %) и Индия – 30 % (3 из 10 – 30 %)
в) Для «num_region_split» — просто сохраните количество строк для значения страны. Например: для конкретной группы, показанной в примере данных, Австралия — 7 строк из общего числа 10, а Индия — 3 из общего числа 10.
b) Сохраните значения в формате списка ( в порядке убывания). Это означает, что Австралия должна появиться первой, потому что ее значение составляет 70 % (что выше, чем в Индии).
Я попробовал сделать то, что показано ниже, но это никуда не денется

Код: Выделить всё

df['total_purchases'] = df.groupby(['cust_id', 'product_id'])['purchase_country'].transform('size')
df['unique_country'] = df.groupby(['cust_id', 'product_id'])['purchase_country'].transform('nunique')
Обратите внимание, что мои реальные данные содержат более 1000 клиентов и 200 комбинаций продуктов.
Я ожидаю, что мои выходные данные будут в новом фрейме данных, как показано ниже. ниже для каждой комбинации cust и Product_id
Изображение


Подробнее здесь: https://stackoverflow.com/questions/789 ... each-group

Вернуться в «Python»