Почему groupby().apply() выдает противоречивые результаты для идентичных групп, если DataFrame имеет перекрывающиеся индPython

Программы на Python
Ответить
Anonymous
 Почему groupby().apply() выдает противоречивые результаты для идентичных групп, если DataFrame имеет перекрывающиеся инд

Сообщение Anonymous »

Я заметил, что groupby().apply() дает разные результаты для двух групп, которые выглядят одинаково, за исключением того, что общий DataFrame имеет повторяющиеся значения индекса.
Вот минимальный воспроизводимый пример:

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

import pandas as pd

df = pd.DataFrame({
'group': ['A','A','B','B','B'],
'value': [1,2,1,2,2]
}, index=[0,1,1,2,3])  # note the duplicate index: 1 appears twice

result = df.groupby('group').apply(lambda g: g)
print(result)
Выход:

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

    group  value
group
A     A     1
A     2
B     B     1
B     2
B     2
Но когда я сбрасываю индекс, чтобы он стал уникальным:

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

df2 = df.reset_index(drop=True)
print(df2.groupby('group').apply(lambda g: g))
Я получаю другую структуру (особенно внутри группы B).
Почему наличие повторяющихся значений индекса влияет на то, как groupby().apply() создает возвращаемый индекс? Как правильно сохранить исходные строки и избежать неожиданного вложения индексов при применении функций?>

Подробнее здесь: https://stackoverflow.com/questions/798 ... roups-when
Ответить

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

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

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

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

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