我有一个仔细排序的数据框,如下所示:
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']
。应该留在后面'
如何在不进行排序的情况下循环播放组?
答案 0 :(得分:3)
正如评论中所讨论的,您只需要
groupby("col1", sort=False)
sort:boolean,默认为True
对组键进行排序。关闭它可以获得更好的性能。请注意,这不会影响每组内观察的顺序。 groupby保留每个组中的行顺序。