Join Multiple Columns Below Each Other From Pandas Dataframe

Viewed 52

I have a dataframe df having columns 'a' and 'b' as shown:

a b
10 4
NaN 5
20 NaN
30 6

I want to make a new dataframe with a column 'c' having values of column 'a' and 'b' below each other with no NaN values as shown:

c
10
20
30
4
5
6
1 Answers

Use DataFrame.unstack with DataFrame.dropna:

df1 = df.unstack().dropna().astype(int).reset_index(drop=True).to_frame('c')
print (df1)
    c
0  10
1  20
2  30
3   4
4   5
5   6

Or DataFrame.melt with DataFrame.dropna:

df1 = df.melt(value_name='c')[['c']].dropna().astype(int)
df1 = df.melt(value_name='c').drop('variable',1).dropna().astype(int)
print (df1)
    c
0  10
2  20
3  30
4   4
5   5
7   6
Related