给定以下数据框。
In [31]: rand = np.random.RandomState(1)
df = pd.DataFrame({'A': ['foo', 'bar', 'baz'] * 2,
'B': rand.randn(6),
'C': rand.rand(6) > .5})
In [32]: df
Out[32]: A B C
0 foo 1.624345 False
1 bar -0.611756 True
2 baz -0.528172 False
3 foo -1.072969 True
4 bar 0.865408 False
5 baz -2.301539 True
我希望按照 B
的总和以及 C
的值(非汇总)将它分为若干组 (A
) ,并对其排序。基本上就是得到 A
组的顺序。
In [28]: df.groupby('A').sum().sort('B')
Out[28]: B C
A
baz -2.829710 1
bar 0.253651 1
foo 0.551377 1
然后通过True/False来实现,最终看起来像这样:
In [30]: df.ix[[5, 2, 1, 4, 3, 0]]
Out[30]: A B C
5 baz -2.301539 True
2 baz -0.528172 False
1 bar -0.611756 True
4 bar 0.865408 False
3 foo -1.072969 True
0 foo 1.624345 False
这怎么做呢?
groupby
的sort=False
标志将返回任意的、不一定排序的顺序(我猜我是将它们与 Python 字典联系起来了)。但是这个答案暗示该标志保证保留数据框行的原始顺序? - beardcOut[7]
,应该在Input[7]
的参数中添加inplace=True
。 - MoonKnight