Align according to a specific column in table generated by pandas

Advertisements

I have some dataframes that are generated using pandas.

df1 = pd.DataFrame({"A": ['a','b','c','d']})
df2 = pd.DataFrame({"B": ['','c','a','']})
df3 = pd.DataFrame({"C": ['','','d','']})

df=pd.concat([df1,df2,df3],axis=1)
df

This is the result of the code.

enter image description here

I am looking for alignment of the columns in the right considering the row with the more elements, like here below. I have tried and searched for different strategies, but they did work. Some suggestions?

enter image description here

>Solution :

You can rework the data after concatenation with :

import numpy as np

df = pd.concat([df1,df2,df3],axis=1)

# convert the DataFrame to array
a = df.to_numpy()

# push the empty cells to the left and assign back
df[:] = a[np.arange(len(a))[:,None], np.argsort(a!='', axis=1)]

Output:

   A  B  C
0        a
1     b  c
2  c  a  d
3        d

Leave a ReplyCancel reply