问: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
我们使用stack
, swaplevel
, to_frame
和T
:
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