python - 大熊猫中的函数按行数将行堆叠成列?
问题描述
假设我有异构数据框:
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 的数据框
我确定必须有一些简单的方法我在这里没有一系列循环等
解决方案
如果需要将所有值加入字符串,请使用:
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