amn89
amn89

Reputation: 91

Merge columns to one columns and new rows in dataframe pandas

I have a dataframe like this

col1   0    1   2   3   4   5   6   7   8   9   10  11
 a     NaN  NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
 b     NaN  NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
 c     x    y   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
 a     k    NaN NaN z   NaN NaN NaN NaN NaN NaN NaN NaN
 h     NaN  x   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

I want to change it into:

col1   col2
 a     NaN
 b     NaN
 c     x   
 c     y
 a     k
 a     z
 h     x

Any help please?

Upvotes: 0

Views: 36

Answers (1)

BENY
BENY

Reputation: 323226

You can try this

df=df.set_index('col1')
df.loc[df.isnull().sum(1)==df.shape[1],0]='NaN'
df.stack().reset_index(level=1,drop=True).replace('NaN',np.nan).to_frame('col2').reset_index()
Out[544]: 
  col1 col2
0    a  NaN
1    b  NaN
2    c    x
3    c    y
4    a    k
5    a    z
6    h    x

Upvotes: 2

Related Questions