问:Python(熊猫或其他) - 我需要" flatten"一个数据文件,从许多行,几列到1行多列

时间:2017-08-01 20:29:50

标签: python excel pandas

我需要"压扁"一个数据文件,从许多行,几列到一行多列。

我目前在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

感谢您的帮助!

2 个答案:

答案 0 :(得分:7)

一行,为了好玩

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

答案 1 :(得分:5)

让我们使用stackswaplevelto_frameT

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

或者更好,(使用@piRSquared unstack解决方案)

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