我需要将数据文件从多行、几列"展平"到 1 行多列。
我目前在熊猫中有一个数据帧(从 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
让我们使用stack
、swaplevel
、to_frame
和T
:
df_out = df.stack().swaplevel(1,0).to_frame().T.sort_index(axis=1)
或者更好的是,(使用@piRSquared解栈解决方案(
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