pandas преобразование формы таблицы
Есть датафрейм:
data = pd.DataFrame({
'a': [3, 1, 2],
'b': [5, 3, 4],
'c': [7, 6, 5]})
Как преобразовать его в дф из двух колонок: в одной - названия колонок из data, в другой - их значения? Общий вид такой:
col1 col2
a 3
a 1
a 2
b 5
b 3
.. ..
В голову приходит только создать новый дф, забрать заголовки исходного с помощью data.columns и дальше заполнять циклами по соответствию, но наверняка как-то проще можно.
Ответы (2 шт):
Автор решения: passant
→ Ссылка
На ум приходит известное: "Месье знает толк в извращениях" :-) Если так не хочется выписывать циклы, то можно например вот так:
res=pd.DataFrame({'col1':np.repeat(data.columns,len(data)),
'col2':data.to_numpy().transpose().flatten()})
print(res)
Получаем:
col1 col2
0 a 3
1 a 1
2 a 2
3 b 5
4 b 3
5 b 4
6 c 7
7 c 6
8 c 5
Вот только я абсолютно не уверен, что так будет эффективнее, чем через явный цикл. Если хотите - попробуйте проверить. Мне лично лень.
Автор решения: SergFSM
→ Ссылка
для этого у pandas есть специальный метод:
data.melt()
>>> out
'''
variable value
0 a 3
1 a 1
2 a 2
3 b 5
4 b 3
5 b 4
6 c 7
7 c 6
8 c 5