Groupby apply выполняет нежелательное транспонирование, когда есть только одна группа - PullRequest
0 голосов
/ 30 мая 2020

Pandas имеет непоследовательное поведение при применении groupby с одной группой:

(
    pd.DataFrame({'c1': [0, 0, 0],
                  'c2': [1, 2, 3]})
    .groupby('c1')
    .apply(lambda df: df['c2']).shape
)

равно (1, 3)

, а

(
    pd.DataFrame({'c1': [0, 0, 1],
                  'c2': [1, 2, 3]})
    .groupby('c1')
    .apply(lambda df: df['c2']).shape
)

равно (3, ).

Когда в переменной groupby есть только одно уникальное значение, полученный Ser ie заменяется ожидаемым.

Мне нужно согласованное поведение: количество строк должно оставаться на уровне 3 независимо от количества групп.

1 Ответ

1 голос
/ 30 мая 2020

Вы можете указать squeeze=True в .groupby(...), когда вы группируете по столбцу, который имеет только одно значение, например:

(
    pd.DataFrame({'c1': [0, 0, 0], 
                  'c2': [1, 2, 3]})
    .groupby('c1', squeeze=True)
    .apply(lambda df: df['c2']).shape
)

См. Документацию здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...