我需要"压扁"一个数据文件,从许多行,几列到一行多列。
我目前在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
感谢您的帮助!
答案 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)
让我们使用stack
,swaplevel
,to_frame
和T
:
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