#pandas #dataframe #multi-index #shuffle
Вопрос:
Следующий фрагмент кода создает образец фрейма данных:
fruits=pd.DataFrame()
fruits['month']=['jan','feb','feb','march','jan','april','april','june','march','march','june','april']
fruits['fruit']=['apple','orange','pear','orange','apple','pear','cherry','pear','orange','cherry','apple','cherry']
ind_mnth=fruits['month'].values
ind_fruit=fruits['fruit'].values
fruits['price']=[30,20,40,25,30 ,45,60,45,25,55,37,60]
fruits_grp = fruits.set_index([ind_mnth, ind_fruit],drop=False)
Как я могу случайным образом перемешать внешний индекс и внутренний индекс в порядке возрастания в этом многоиндексном фрейме данных?
Комментарии:
1. таким образом, столбец фруктов зависит от индекса для сортировки?
2. да, колонка фруктов зависит от месяца.
Ответ №1:
вы могли бы попробовать что-то вроде этого:
mnths = fruits.drop_duplicates(subset=['month']).sample(frac=1).reset_index().month.unique()
fruits.groupby(['month','fruit'])['price'].sum().loc[mnths]
сначала вы выбираете случайную сортировку месяцев во фрейме данных, затем группируете по месяцам и фруктам, которые будут отсортированы в алфавитном порядке, а затем индексируете, используя список случайно упорядоченных месяцев
Комментарии:
1. Цены суммируются/добавляются. Этого не должно быть.
2. они суммируются только в том случае, если есть повторяющиеся комбинации месяца и фруктов. Предполагая, что повторяющихся строк нет, это не будет проблемой
3. при условии, что в наборе данных имеются повторяющиеся строки месяца и фруктов, цены суммироваться не будут