问:Python(熊猫或其他)-我需要;“展平”;从多行、少列到一行、多列的数据文件

问:Python(熊猫或其他)-我需要;“展平”;从多行、少列到一行、多列的数据文件,python,excel,pandas,Python,Excel,Pandas,我需要将数据文件从多行、少列“展平”到一行多列 我目前在pandas中有一个数据框(从Excel加载),最终需要更改数据的显示方式,以便以逻辑方式积累大量数据。下表试图说明我的要求 发件人: 致: 谢谢你的帮助 让我们使用stack,swaplevel,to_frame和T: df_out = df.stack().swaplevel(1,0).to_frame().T.sort_index(axis=1) 或者更好,(使用@piRSquared unstack解决方案) 输出: 1_C

我需要将数据文件从多行、少列“展平”到一行多列

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

发件人:

致:


谢谢你的帮助

让我们使用
stack
swaplevel
to_frame
T

df_out = df.stack().swaplevel(1,0).to_frame().T.sort_index(axis=1)
或者更好,(使用@piRSquared unstack解决方案)

输出:

   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
一句话,为了好玩

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

您可以使用Excel VBA创建一个嵌套的for循环,该循环将执行您需要的操作。仅转置有什么问题吗?@Wen,现在您有了!想想你现在能做的所有有趣的事情(-:df.unstack().pipe(lambda s:pd.DataFrame([s.values],columns=s.index.map(''.join)))为什么要在join上使用格式?哦,如果那些数字是整数而不是字符串,我不小心删除了注释><如果它们是列标题中的int,它就会断开。
df.rename(columns=int)。unstack().pipe(lambda s:pd.DataFrame([s.values],columns=s.index.map('''.join))
生成一个
类型错误:序列项0:预期的str实例,找到int
。使用格式覆盖了我的后面。
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
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