Pandas свод по всем столбцам кроме указанных

Как в pandas сделать группировку по столбцам, но чтобы указать не те столбцы по которым свод, а те которые надо исключить? Например есть 20 столбцов, нужно сделать свод по 18 из них. Как правильно написать groupby или pivot_table чтобы указать только 2 "Ненужных" столбца, а не писать 18 нужных?


Ответы (1 шт):

Автор решения: MarianD

Когда df - ваш датафрейм и "Exclude1", "Exclude2" не нужные столбцы, вы можете сделать список остальных как

cols = [col for col in df.columns if col not in ("Exclude1", "Exclude2")]

и применить этот список, например

df.goupby(cols).sum()

Объяснение:

  • df.cols - хотя это объект типа Index, его возможно использовать как список всех имен столбцов

  • [col for col in df.columns if col not in ("Exclude1", "Exclude2")] - это генератор списка. Я напишу его с излишними пробелами, чтобы лучше было видно его 3 части:

    [col     for col in df.columns     if col not in ("Exclude1", "Exclude2")]
    

    Перевод:

    • Список всех объектов col,
    • из списка (for col in) df.columns,
    • которые не находятся (if col not in) в кортеже ("Exclude1", "Exclude2").
→ Ссылка