我有一个像这样的数据框的场景:
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
,但是从未遇到过这样的问题。
任何帮助将不胜感激。
答案 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