多列数据框仅限两列

Multiple columns dataframe to two columns only

是否有 pandas' 技巧来转换以下形式的数据框:

           12345    98765
XYXABC   182.000      0.0
JKLVWX   140.000      0.0
RSTUVW   110.000      0.0

到表格:

          Col_1     Col_2
12345    XYXABC   182.000
12345    JKLVWX   140.000
12345    RSTUVW   110.000
98765    XYXABC       0.0
98765    JKLVWX       0.0
98765    RSTUVW       0.0

?

PS: 行和列比较多,我只放了几个为了更好看。

使用DataFrame.unstack with DataFrame.reset_index and DataFrame.set_axis:

df1 = df.unstack().reset_index(level=1).set_axis(['Col_1','Col_2'], axis=1)
print (df1)
        Col_1  Col_2
12345  XYXABC  182.0
12345  JKLVWX  140.0
12345  RSTUVW  110.0
98765  XYXABC    0.0
98765  JKLVWX    0.0
98765  RSTUVW    0.0

DataFrame.melt的解决方案:

df1 = (df.rename_axis('Col_1')
         .melt(ignore_index=False, value_name='Col_2')
         .reset_index()
         .set_index('variable')
         .rename_axis(None))
print  (df1)
        Col_1  Col_2
12345  XYXABC  182.0
12345  JKLVWX  140.0
12345  RSTUVW  110.0
98765  XYXABC    0.0
98765  JKLVWX    0.0
98765  RSTUVW    0.0

你可以试试

out = (df.T.melt(value_vars=df.index,
                var_name='Col_1', value_name='Col_2',
                ignore_index=False))
print(out)

        Col_1  Col_2
12345  XYXABC  182.0
98765  XYXABC    0.0
12345  JKLVWX  140.0
98765  JKLVWX    0.0
12345  RSTUVW  110.0
98765  RSTUVW    0.0