我有一个看起来像这样的数据框:
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
我已经看到使用unstack
和sort_index
的类似答案,但是如何像我在row_dataframe中那样配对列?任何帮助表示赞赏!
答案 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
但是我敢肯定有一种更清洁的方式来做。