Как преобразовать фрейм данных Pandas в следующий дисплей? (от горизонтального к вертикальному; с повторяющимися клавишами)

#python #pandas

Вопрос:

 data = {
    'Column 1': ['A', 'B'],
    'Column 2': ['a_base', 'b_base'],
    'Column 3': ['a_part', 'b_part']
}

df = pd.DataFrame(data)

 

Дает результат:

 Column 1 | Column 2 | Column 3 
A        | a_base   | a_part   
B        | b_base   | b_part 
 

Как я могу получить следующее:

 New Column 1 | New Column 2 
A            | a_base       
A            | a_part       
B            | b_part       
B            | b_part       
 

Комментарии:

1. Ты пробовал растаять?

Ответ №1:

Вы можете melt добавить столбцы 2 и 3 в новый столбец, затем выбрать и отсортировать по столбцам, которые вы хотите сохранить.

 import pandas as pd

data = {
    'Column 1': ['A', 'B'],
    'Column 2': ['a_base', 'b_base'],
    'Column 3': ['a_part', 'b_part']
}

df = pd.DataFrame(data)

df2 = df.melt(id_vars=['Column 1'], value_vars=['Column 2', 'Column 3'], value_name='New Column 2')
df2 = df2[['Column 1', 'New Column 2']].sort_values(by='Column 1')
print(df2)
 

Выход:

   Column 1 New Column 2
0        A       a_base
2        A       a_part
1        B       b_base
3        B       b_part
 

Комментарии:

1. Спасибо @Ящерица Билл! Это прекрасно работает! Я решаю реальную проблему на работе, которая связана с продуктами нашей компании, базовыми моделями и деталями. Эта «мини-проблема» и ее решение напрямую связаны с моей реальной рабочей проблемой. Спасибо!