首页 > 解决方案 > 大熊猫中的函数按行数将行堆叠成列?

问题描述

假设我有异构数据框:

     a  b  c  d
1    1  2  3  4
2    5  6  7  8 
3    9  10 11 12
4    13 14 15 16

我想像这样堆叠行:

     a         b          c          d
1    1,5,8,13  2,6,10,14  3,7,11,15  4,8,12,16

ETC...

grouby 等的所有引用似乎都需要一些分组功能,我只想将 x 行放入列中,而不管它们的内容如何。每行都有一个时间戳,我希望按样本计数对值进行分组,所以我想要 1 行,其中 x 样本行的所有值作为列。

我最终应该得到一个具有 x*原始列数和原始行数/x 的数据框

我确定必须有一些简单的方法我在这里没有一系列循环等

标签: pythonpandasdataframe

解决方案


如果需要将所有值加入字符串,请使用:

df1 = df.astype(str).agg(','.join).to_frame().T
print (df1)
          a          b          c          d
0  1,5,9,13  2,6,10,14  3,7,11,15  4,8,12,16

或者,如果需要创建列表,请使用:

df2 = pd.DataFrame([[list(df[x]) for x in df]], columns=df.columns)
print (df2)
               a               b               c               d
0  [1, 5, 9, 13]  [2, 6, 10, 14]  [3, 7, 11, 15]  [4, 8, 12, 16]

如果需要带有MultiIndex(从索引和列标签生成)的标量,请使用:

df3 = df.unstack().to_frame().T
print (df3)
   a            b             c             d           
   1  2  3   4  1  2   3   4  1  2   3   4  1  2   3   4
0  1  5  9  13  2  6  10  14  3  7  11  15  4  8  12  16

推荐阅读