将多行数据框转换为具有成对列的单行数据框

时间:2019-07-08 18:43:20

标签: python pandas

我有一个看起来像这样的数据框:

   Mean_58   58   Mean_59   59   ...   Mean_350   350
0  7         2    4         3          6          5 
1  8         1    2         5          8          3
2  3         1    9         7          8          9

我想创建一个名为row_dataframe的单行数据框,它具有以下列标题和顺序:

   Mean_58_1   58_1   Mean_58_2   58_2   Mean_58_3   58_3 ... Mean_350_3 350_3
0  7           2      8           1      3           1        8          9

我已经看到使用unstacksort_index的类似答案,但是如何像我在row_dataframe中那样配对列?任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

好吧,您实际上可以使用熔化。让我们以这个df为例:

df = pd.DataFrame(np.arange(20).reshape(4,5),columns=["a","b","c","d","e"])
#Output
    a   b   c   d   e
0   0   1   2   3   4
1   5   6   7   8   9
2   10  11  12  13  14
3   15  16  17  18  19

现在,您将其稍微旋转一下,即可得到想要的东西:

intermediate = pd.melt(df,id_vars=["index"],value_vars=df.columns.difference(["index"]))
cols = intermediate["variable"].astype("str") + "_" + intermediate["index"].astype("str")
final_df = pd.DataFrame(columns=cols.values,data=intermediate["value"].values.reshape(1,20))

#Output
a_0     a_1     a_2     a_3     b_0     b_1     b_2     b_3     c_0     c_1     c_2     c_3     d_0     d_1     d_2     d_3     e_0     e_1     e_2     e_3
0       5       10      15      1       6       11      16      2      7       12        17     3       8       13      18      4       9       14      19

但是我敢肯定有一种更清洁的方式来做。