Harsh Wardhan
Harsh Wardhan

Reputation: 2158

Create a single column from multiple columns in a dataframe

I have a dataframe with 5 columns: M1, M2, M3, M4 and M5. Each column contains floating-point values. Now I want to combine the data of 5 columns into one.

I tried

cols = list(df.columns)
df_new['Total'] = []
df_new['Total'] = [df_new['Total'].append(df[i], ignore_index=True) for i in cols]

But I'm getting this

enter image description here

I'm using Python 3.8.5 and Pandas 1.1.2.

Here's a part of my df

M1      M2      M3      M4      M5
0       5       12      20      26
0.5     5.5     12.5    20.5    26.5
1       6       13      21      27
1.5     6.5     13.5    21.5    27.5
2       7       14      22      28
2.5     7.5     14.5    22.5    28.5
10      15      22      30      36
10.5    15.5    22.5    30.5    36.5
11      16      23      31      37
11.5    16.5    23.5    31.5    37.5
12      17      24      32      38
12.5    17.5    24.5    32.5    38.5

And this is what I'm expecting

0
0.5
1
1.5
2
2.5
10
10.5
11
11.5
12
12.5
5
5.5
6
6.5
7
7.5
15
15.5
16
16.5
17
17.5
12
12.5
13
13.5
14
14.5
22
22.5
23
23.5
24
24.5
20
20.5
21
21.5
22
22.5
30
30.5
31
31.5
32
32.5
26
26.5
27
27.5
28
28.5
36
36.5
37
37.5
38
38.5

Upvotes: 0

Views: 120

Answers (1)

Anurag Dabas
Anurag Dabas

Reputation: 24324

import pandas as pd

Just make use of concat() method and list comprehension:

result=pd.concat((df[x] for x in df.columns),ignore_index=True)

Now If you print result then you will get your desired output

Performance(concat() vs unstack()):

enter image description here

Upvotes: 2

Related Questions