Группируйте строки, когда числовое значение одного столбца находится между значениями двух других столбцов или следует зPython

Программы на Python
Гость
Группируйте строки, когда числовое значение одного столбца находится между значениями двух других столбцов или следует з

Сообщение Гость »


У меня текущая проблема. У меня есть следующий фрейм данных:

Код_страны страна low_range high_range -------------------------------------------------- --- Австралия Австралия 1 10 ФР Франция 2 40 ФР Франция 4 60 Австралия Австралия 11 23 Австралия Австралия 21 23 Австралия Австралия 30 43 Австралия Австралия 43 55 ФР Франция 46 55 ФР Франция 67 80 ФР Франция 81 98 Я хотел бы получить такой результат:

Код_страны страна low_range high_range -------------------------------------------------- --- Австралия Австралия 1 23 ФР Франция 2 60 Австралия Австралия 30 55 ФР Франция 67 98 чтобы все эти строки были объединены в одну:

Код_страны страна low_range high_range -------------------------------------------------- --- ФР Франция 2 40 ФР Франция 4 60 ФР Франция 46 55 -------------------------------------------------- --- ФР Франция 2 60 -------------------------------------------------- --- -------------------------------------------------- --- ФР Франция 67 80 ФР Франция 81 98 -------------------------------------------------- --- ФР Франция 67 98 -------------------------------------------------- --- -------------------------------------------------- --- Австралия Австралия 1 10 Австралия Австралия 11 23 Австралия Австралия 21 23 -------------------------------------------------- --- Австралия Австралия 1 23 -------------------------------------------------- --- -------------------------------------------------- --- Австралия Австралия 30 43 Австралия Австралия 43 55 -------------------------------------------------- --- Австралия Австралия 30 55 Как объединить строки с одинаковым кодом страны или страны, чтобы получить строку с диапазоном от наименьшего номера диапазона до самого высокого номера диапазона? Но только если все объединенные строки имеют номер в конечном диапазоне строк?

Обратите внимание, что мой фрейм данных уже упорядочен по значениям low_number.

Мой уровень в Pandas низкий. Однако я уже группирую по странам:

countriesGroup = df.groupby(['country'], as_index=False) Затем я безуспешно попытался сгруппировать по одной конкретной стране, используя условие:

france =countriesGroup.get_group('Франция') france.groupby(france['high_range'] == france['low_range'].shift(1) + 1).agg( { 'high_range': max, 'low_range': min}) Я не знаю, как сохранить все остальные столбцы, заменяя значение low_range минимальным значением и high_range высоким значением с помощью agg или любой другой функции.

Я уже задавал аналогичный вопрос, но речь шла только о том, чтобы объединить строку с тем же low_range, что и следующая строка high_range. Ответ был:

df.rename(columns={"high_range":"key"}).merge(df.rename(columns{"low_range":"key"})).drop(columns="key") Это идеально подходит для моего предыдущего варианта использования, но я не понимаю, как можно адаптировать его к новому.

Заранее спасибо!

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