Home > Net >  i want to convert all these rows and columns into 2 rows like this from
i want to convert all these rows and columns into 2 rows like this from

Time:03-01

A | B | C | D X 1 2 3 4 Y 5 6 7 8 Z 11 12 13 14

I want to convert the above data frame like this

XA | XB | XC | XD | YA |.....| ZD 1 2 3 4 5 14

please help me with this

CodePudding user response:

Use:

s = df.stack()
new_df = s.to_frame().T.set_axis([f'{x}{y}' for x, y in s.index], axis=1)

   XA  XB  XC  XD  YA  YB  YC  YD  ZA  ZB  ZC  ZD
0   1   2   3   4   5   6   7   8  11  12  13  14

CodePudding user response:

Here's a possible way. First, pd.melt your data in all its columns but keep the original index:

>>> df df = pd.melt(df, value_vars=df.columns, ignore_index=False)
>>> df df
      variable  value
X        A      1
Y        A      5
Z        A     11
X        B      2
Y        B      6
Z        B     12
X        C      3
Y        C      7
Z        C     13
X        D      4
Y        D      8
Z        D     14

Now set the new index and transpose the data:

>>> df df = df[["value"]].set_index(df.index   df["variable"]).T
>>> df 
       XA  YA  ZA  XB  YB  ZB  XC  YC  ZC  XD  YD  ZD
value   1   5  11   2   6  12   3   7  13   4   8  14
  • Related