如何在没有排序的情况下迭代组?

时间:2017-12-29 22:23:12

标签: python pandas dataframe pandas-groupby

我有一个仔细排序的数据框,如下所示:

SELECT sum(CompletedTraining = 'Incomplete') AS Total
FROM MyTable AS t1
GROUP BY Department
ORDER BY Department ASC;

我想将这些组总结为一行,保留顺序

x = pd.DataFrame({'col1':['b', 'e','e', 'g','g', 'f','f'],
                  'col2':['f', 'g','f', 'f','e', 'g','e'],
                  'col3':[ 1 ,  7 , 2 ,  6 , 7 ,  20, 5 ]})

但在names, totals, fs = zip(* list( (name, total(group), f(group)) for name, group in x.groupby('col1')) ) out = pd.DataFrame({'lang':names, 'total':totals, 'partners':tails}) 行中按out排序。虽然col1以正确的顺序生成所有内容,但在x.groupby('col1').heads()中进行迭代会在[name for name, _ in x.groupby('col1')]时返回['b', 'e', 'f', 'g']。应该留在后面'

如何在不进行排序的情况下循环播放组?

1 个答案:

答案 0 :(得分:3)

正如评论中所讨论的,您只需要

groupby("col1", sort=False)

取自the documentation

  

sort:boolean,默认为True

     

对组键进行排序。关闭它可以获得更好的性能。请注意,这不会影响每组内观察的顺序。   groupby保留每个组中的行顺序。