首页 > 解决方案 > 在降序 Pandas 中按数据框中的特定列分组

问题描述

所以我有一个包含 187 列的数据框。最后一列(称为目标)在 1 和 0 中表示真或假。我想根据最后一列对所有行进行分组,如果它有 1,如果它们在最后一列中等于 0,则所有行都为 0。1 显示在顶部,0 显示在 1 之后。另外,是否可以取出最后一列中最后一个“1”的索引值?

所以基本上是这样的:

抱歉,如果这有点令人困惑,或者已经回答但我似乎找不到任何东西。大约有 18000 行,大约有 18000 行。14000 个值等于 1,其余 4000 个值等于 0。希望能在这里得到一些指导。

标签: pythonpandasgroup-bypandas-groupby

解决方案


首先mergesort按列排序值并按以下方式target获取最后一行targetDataFrame.drop_duplicates

df1 = df.sort_values('target', ascending=False, kind='mergesort')

last = df1.drop_duplicates('target', keep='last')

如果需要分组:

for name, g in df1.groupby('target'):
    print (name)
    print (g)

推荐阅读