Добавление заголовков столбцов в новую рамку данных pandas

Я создаю новый .size данных панд из предыдущего .groupby .size методы .groupby и .size .

 [in] results = df.groupby(["X", "Y", "Z", "F"]).size() [out] 9 27/02/2016 1 N 326 9 27/02/2016 1 S 332 9 27/02/2016 2 N 280 9 27/02/2016 2 S 353 9 27/02/2016 3 N 177 

Это ведет себя так, как ожидалось, однако результатом является кадр данных без заголовков столбцов.

В этом вопросе SO указано, что следующее добавляет имена столбцов в сгенерированный фрейм данных

 [in] results.columns = ["X","Y","Z","F","Count"] 

Однако это, похоже, не оказывает никакого влияния.

 [out] 9 27/02/2016 1 N 326 9 27/02/2016 1 S 332 9 27/02/2016 2 N 280 9 27/02/2016 2 S 353 9 27/02/2016 3 N 177 

  • Pywin32 save .docx как pdf
  • Почему np.where быстрее, чем pd.apply
  • matplotlib: использование цветной таблицы для цветной таблицы
  • Нормализовать столбцы массива numpy в python
  • Питон Python Force поддерживает ведущие нули переменных int
  • Почему @ foo.setter в Python не работает для меня?
  • Тест покрытия Django для URL-адресов 0%, почему?
  • Как использовать Cython для создания стойки dll
  • 2 Solutions collect form web for “Добавление заголовков столбцов в новую рамку данных pandas”

    То, что вы видите, это ваши группированные столбцы в качестве индекса, если вы вызываете reset_index тогда он восстанавливает имена столбцов

    так

     results = df.groupby(["X", "Y", "Z", "F"]).size() results.reset_index() 

    должно сработать

     In [11]: df.groupby(["X","Y","Z","F"]).size() Out[11]: XYZF 9 27/02/2016 1 N 1 S 1 2 N 1 S 1 3 N 1 dtype: int64 In [12]: df.groupby(["X","Y","Z","F"]).size().reset_index() Out[12]: XYZF 0 0 9 27/02/2016 1 N 1 1 9 27/02/2016 1 S 1 2 9 27/02/2016 2 N 1 3 9 27/02/2016 2 S 1 4 9 27/02/2016 3 N 1 

    Кроме того, вы можете добиться того, чего хотите, используя count :

     In [13]: df.groupby(["X","Y","Z","F"]).count().reset_index() Out[13]: XYZF Count 0 9 27/02/2016 1 N 1 1 9 27/02/2016 1 S 1 2 9 27/02/2016 2 N 1 3 9 27/02/2016 2 S 1 4 9 27/02/2016 3 N 1 

    Вы также можете передать param as_index=False здесь:

     In [15]: df.groupby(["X","Y","Z","F"], as_index=False).count() Out[15]: XYZF Count 0 9 27/02/2016 1 N 1 1 9 27/02/2016 1 S 1 2 9 27/02/2016 2 N 1 3 9 27/02/2016 2 S 1 4 9 27/02/2016 3 N 1 

    Обычно это нормально, но некоторые агрегированные функции будут работать, если вы попытаетесь использовать методы агрегирования для столбцов, чьи dtypes не могут быть агрегированы, например, если у вас есть str dtypes, и вы решили вызвать mean например.

    вы можете использовать as_index=False параметр для функции .groupby() :

     results = df.groupby(["X", "Y", "Z", "F"], as_index=False).size().rename(columns={0:'Count'}) 
    Interesting Posts

    Как создать таймер с помощью tkinter?

    Модули движка google – длительные задачи> 10 минут

    В чем смысл одиночного и двойного подчеркивания перед именем объекта?

    pandas.algos._return_false вызывает PicklingError с dill.dump_session на CentOS

    Добавление фонового изображения к графику с известными координатами угла

    Как де-импортировать модуль Python?

    PHP-скрипт не может выводиться из сценария Python

    Unittest setUp / tearDown для нескольких тестов

    Должен ли Python 2.6 в OS X работать с несколькими файлами easy-install.pth в $ PYTHONPATH?

    UnicodeDecodeError: кодек ascii не может декодировать байт 0xd1 в позиции 2: порядковый номер не в диапазоне (128)

    Возможно ли реализовать функцию «изменить пароль при следующем входе в систему» ​​в администраторе django?

    В Celery, как мне запустить задачу, а затем запустить эту задачу для другой задачи и сохранить ее?

    Что такое Pythonic для реализации простого FSM?

    Pip не собирает пользовательский набор cmdclass

    Как написать inline if заявление для печати?

    Python - лучший язык программирования в мире.