熊猫按多列分组并按行获取输出

时间:2019-12-14 06:09:02

标签: python pandas dataframe pandas-groupby

我有一个像这样的数据框的场景:

dF:


         a  b  c  d  e  kmeans
counter 
0        1  1  1  1  1   1
1        0  0  1  0  1   2
2        1  0  1  1  1   3
3        0  1  0  0  0   1
4        0  0  0  1  0   2
5        1  1  0  0  1   2

我想要的输出是:

   1   2   3
a  1   1   0
b  2   1   0
c  1   1   1
d  1   1   1
e  1   2   1

我在原始数据帧中有类似 500 + 列的内容,我希望它们按这些列分组,并将其作为行并将最后一列的行值转置为列。

我正在按以下方式分组:

df.groupby(col[0:-1])['kmeans'].sum() but i get an error

我以前使用过groupby,但是从未遇到过这样的问题。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我认为您需要按sum汇总kmeans,然后转置并最后删除列名kmeans

df1 = df.groupby('kmeans').sum().T.rename_axis(None, axis=1)
print (df1)
   1  2  3
a  1  1  1
b  2  1  0
c  1  1  1
d  1  1  1
e  1  2  1

或者如果通过kmeans创建索引,则仅在第一级使用sum,转置并最后删除列mame:

df1 = df.set_index('kmeans').sum(level=0).T.rename_axis(None, axis=1)
print (df1)
   1  2  3
a  1  1  1
b  2  1  0
c  1  1  1
d  1  1  1
e  1  2  1