python - Pandas 按多列分组并按行获取输出
问题描述
我有一个场景,我有一个数据框,例如:
自由度:
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
,但从来没有遇到过这样的问题。任何帮助将非常感激。
解决方案
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
推荐阅读
- ios - 如何将 RGBA 纹理转换为金属中的 Y 和 CbCr 纹理
- php - 如何将变量分配给选定的 ID 值以用于重复选择(获取)?
- c++ - c ++:易失性实例中的易失性成员函数 - 将数组分配给指针是无效转换?
- c++ - C ++ 17在逗号上拆分constexpr字符串并在编译时有元素数量?
- endpoint - 如何扩展现有的执行器健康检查端点?
- javascript - 尝试将数据存储在点击器网站中
- java - 在这种情况下如何删除 NullpointerException?
- windows - 从批处理文件中调用 FOR 表达式中的“ver”会冻结 Windows 10 中的 cmd
- ruby-on-rails - 使用 Lockbox 和 CarrierWave 为 Ruby on Rails 加密和解密文件上传
- c# - 如何使精灵在精灵上方移动时变慢?