简体   繁体   中英

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

在此处输入图像描述

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
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() ):

在此处输入图像描述

You can unstack() the dataframe:

df = df.unstack().reset_index(drop=True).to_frame('M')

#          M
# 0      0.0
# 1      0.5
# 2      1.0
# ...
# 57    37.5
# 58    38.0
# 59    38.5

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM