Транспонировать фрейм данных на определенное количество строк

У меня есть эти данные, как указано ниже.

   Col1 Col2  Col3       Col4
0   A01  CY5     1  -1.091990
1   A01  CY5     2   7.402931
2   A01  CY5     3   0.089915
3   A02  CY5     1  -1.526202
4   A02  CY5     2   2.229630
5   A02  CY5     3  -0.604621
6   A01  TEX     1 -10.525215
7   A01  TEX     2 -38.686164
8   A01  TEX     3   1.337128
9   A06  CY5     1   8.216859
10  A06  CY5     2   6.890880
11  A06  CY5     3   0.466027

Мне нужно преобразовать фрейм данных, как указано ниже.

A01 CY5 -1.09199006470146 7.40293083315009  -1.52620195542602
A02 CY5 -1.52620195542602  2.2963003873349 -0.604621233162902
A01 TEX -10.5252148197815 -3.6861635883042   1.33712824456416
A06 CY5  8.21685850315987 6.89088046827999   0.46602727589584

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать pivot, чтобы изменить форму. Затем используйте rename_axis + reset_index, чтобы получить желаемую форму:

out = df.pivot(['Col1', 'Col2'], 'Col3', 'Col4').add_prefix('Col4_').rename_axis(columns=[None]).reset_index()

Выход:

  Col1 Col2     Col4_1     Col4_2    Col4_3
0  A01  CY5  -1.091990   7.402931  0.089915
1  A01  TEX -10.525215 -38.686164  1.337128
2  A02  CY5  -1.526202   2.229630 -0.604621
3  A06  CY5   8.216859   6.890880  0.466027

Другие вопросы по теме