Python Forum
How to melt dataframe multiple columns to one column
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to melt dataframe multiple columns to one column
#1
Hi,
I have below dataframe, I want to melt all columns to one column. I use below code, but some thing I am missing


import pandas as pd
df = pd.DataFrame({'ID':['A1','A2','A1'],\
'Estart':[1,2,3],\
'Eend':[4,4,5],\
'Rstart':[1,2,1],\
'Rend':[1,6,5]})
pd.melt(df, id_vars=['ID'], value_vars=['Estart','Eend','Rstart','Rend'])
Igot the below outputL
	ID	variable	value
0	A1	Estart	1
1	A2	Estart	4
2	A1	Estart	3
3	A1	Eend	4
4	A2	Eend	4
5	A1	Eend	5
6	A1	Rstart	1
7	A2	Rstart	2
8	A1	Rstart	1
9	A1	Rend	1
10	A2	Rend	6
11	A1	Rend	5
I want as below: Some help how to arrange ad below:


ID	variable	value
A1	Estart	1
A1	Eend	4
A1	Rstart	1
A1	Rend	1
A2	Estart	2
A2	Eend	4
A2	Rstart	2
A2	Rend	6
A1	Estart	3
A1	Eend	5
A1	Rstart	1
A1	Rend	5
Reply
#2
There is .sort_values method which can help you to get desired order; Take a look at
the following example:
import numpy as np

@np.vectorize
def key_func(x):
    # This function impacts on sorting logic;
    if x.endswith('end'):
        return x[0] + '2'
    elif x.endswith('start'):
        return x[0] + '1'
    return x

pd.melt(df, id_vars=['ID'], value_vars=['Estart','Eend','Rstart','Rend']).sort_values(['ID', 'variable'], key=key_func)
So, you need to change key_func to meet your needs (however, I didn't understand the sorting logic lies behind the order that you want to get).
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How to check multiple columns value within range SamLiu 2 890 Mar-13-2023, 09:32 AM
Last Post: SamLiu
  Difference one column in a dataframe Scott 0 496 Feb-10-2023, 08:41 AM
Last Post: Scott
  splitting a Dataframe Column in two parts nafshar 2 741 Jan-30-2023, 01:19 PM
Last Post: nafshar
  Converting a json file to a dataframe with rows and columns eyavuz21 13 2,630 Jan-29-2023, 03:59 PM
Last Post: eyavuz21
  How to assign a value to pandas dataframe column rows based on a condition klllmmm 0 690 Sep-08-2022, 06:32 AM
Last Post: klllmmm
  Nested for loops: Iterating over columns of a DataFrame to plot on subplots dm222 0 1,127 Aug-19-2022, 11:07 AM
Last Post: dm222
  renaming the 0 column in a dataframe Led_Zeppelin 5 1,172 Aug-16-2022, 04:07 PM
Last Post: deanhystad
  How to combine multiple column values into 1? cubangt 15 1,829 Aug-11-2022, 08:25 PM
Last Post: cubangt
  Copy a column from one dataframe to another dataframe Led_Zeppelin 17 8,924 Jul-08-2022, 08:40 PM
Last Post: deanhystad
  How to move multiple columns to initial position SriRajesh 4 1,185 Jul-02-2022, 10:34 AM
Last Post: deanhystad

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020