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

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

Сообщение Anonymous »


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

Код_страны страна 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") Это идеально подходит для моего предыдущего варианта использования, но я не понимаю, как можно адаптировать его к новому.

Заранее спасибо!
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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