问:Python(pandas或其他) – 我需要“扁平化”来自多行的数据文件,less数列为1行多列

我需要“扁平”一个数据文件从多行,几列到1行多列。

我目前在pandas中有一个数据框(从Excel加载),最终需要改变数据的显示方式,这样我才能以逻辑方式积累大量的数据。 下表是试图说明我的要求。

从:

1 2 Ryan 0.706 0.071 Chad 0.151 0.831 Stephen 0.750 0.653 

至:

 1_Ryan 1_Chad 1_Stephen 2_Ryan 2_Chad 2_Stephen 0.706 0.151 0.75 0.071 0.831 0.653 

谢谢你的帮助!

一行,为了好玩

 df.unstack().pipe( lambda s: pd.DataFrame([s.values], columns=s.index.map('{0[0]}_{0[1]}'.format)) ) 1_Ryan 1_Chad 1_Stephen 2_Ryan 2_Chad 2_Stephen 0 0.706 0.151 0.75 0.071 0.831 0.653 

我们使用stackswaplevelto_frameT

 df_out = df.stack().swaplevel(1,0).to_frame().T.sort_index(axis=1) 

或者更好的是(使用@piRSquared栈板解决scheme)

 df_out = df.unstack().to_frame().T df_out.columns = df_out.columns.map('{0[0]}_{0[1]}'.format) df_out 

输出:

  1_Chad 1_Ryan 1_Stephen 2_Chad 2_Ryan 2_Stephen 0 0.151 0.706 0.75 0.831 0.071 0.653