Nano Hash - криптовалюты, майнинг, программирование

Переупорядочить столбец в сводной таблице

Я ищу способ изменить порядок столбцов в сводной таблице.

Вот редкие мои колонки:

pivot.columns
pivot = dfpivot.pivot_table(index=['DEPARTMENT_NAME','LEVEL_NAME','NAME','CLTNAME'],columns=['StaffitWeek'], values=['ASSIGN_TIME'], margins=False, aggfunc=np.sum,fill_value=0)
pivot.columns

выход :

MultiIndex(levels=[['ASSIGN_TIME'], ['S10', 'S11', 'S12', 'S13', 'S14', 'S15', 'S16', 'S17', 'S18', 'S19', 'S6', 'S7', 'S8', 'S9']],
           labels=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]],
           names=[None, 'StaffitWeek'])

Я хотел бы изменить порядок столбца уровня и вместо этого получить порядок S6 S7 S8 S9 S10 S11 S12 S13 S14 S15 S16 S17 S18 S19.

Я пробовал много тем, но у меня не получается это сделать.

Спасибо за вашу помощь


Ответы:


1

Сначала удалите [], чтобы избежать MultiIndex в столбцах:

df = dfpivot.pivot_table(index=['DEPARTMENT_NAME','LEVEL_NAME','NAME','CLTNAME'],
                            columns='StaffitWeek', 
                            values='ASSIGN_TIME', 
                            aggfunc=np.sum,
                            fill_value=0)

И затем сортировка по именам столбцов прохода в функцию sorted с удалением первой буквы путем индексации:

df = df[sorted(df.columns, key=lambda x: int(x[1:]))]

Или используйте str.extract для извлечения целого числа , преобразовать и получить позицию с помощью argsort:

df = df.iloc[:, df.columns.str.extract('(\d+)', expand=False).astype(int).argsort()]

Или используйте natsort:

import natsort as ns
df = df[sorted(ns.natsorted(df.columns), key=lambda x: not x.isdigit())]
14.02.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..