Преобразование строк в столбцы — Python

https://docs.google.com/spreadsheets/d/1ew9_hV30N46zlWKW9Pi-nLM5XxOUUGDbVMRa3FJzEoI/edit#gid=1420260456

Пожалуйста, объясните мне процесс, если мы можем использовать некоторые функции панд, такие как плавление / стек, для преобразования в этот формат.

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

Почему в 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
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вот предложение с использованием некоторых функций pandas изменения формы , которые вы упомянули, и pivot_table:

out = (
        pd.read_excel("/tmp/Untitled spreadsheet.xlsx", sheet_name = "Input")
             .pipe(lambda df: df.assign(**{col: df[col].ffill() for col in ["Product", "Tier Type"]}))
             .rename(columns = {"Tier Type": "tier_type", "Unnamed: 2": "Type"})
             .melt(id_vars=['Product','tier_type','Type'], value_vars=['Unnamed: 3','Unnamed: 4'], value_name='Value')
             .pivot_table(index=['Product','tier_type'], columns='Type', values='Value', aggfunc=lambda x: x)
             .explode(["Cost", "Velocity"])
             .reset_index()
             .rename_axis(None, axis=1)
      )

Выход :

print(out)
   Product tier_type Cost Velocity
0        A     Retro   10    0-600
1        A     Retro   20     601+
2        B     Retro   30   0-1000
3        B     Retro   40    1000+
4        C     Retro   50     0-10
..     ...       ...  ...      ...
13       G     Retro  NaN      NaN
14       H     Retro  NaN      NaN
15       H     Retro  NaN      NaN
16       I     Retro  NaN      NaN
17       I     Retro  NaN      NaN

[18 rows x 4 columns]

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