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 |
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 |
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