这是我的pandas.DataFrame
:
day1 day2 day3
Apple 40 13 98
Orange 32 45 56
Banana 56 76 87
Pineapple 12 19 12
Grape 89 45 67
我想创建一个新的DataFrame
,其中包含最多三天的前3个水果。
三天apple
的总和 - 151
,orange
- 133
,banana
- 219
,{{1 } - Pineapple
,43
- grape
所以前三名成果是:1)201
; 2)banana
; 3)grape
。
这是预期的输出:
apple
如何使用 day1 day2 day3
Banana 56 76 87
Grape 89 45 67
Apple 40 13 98
?
谢谢!
答案 0 :(得分:14)
以下是按总和获得前3天的指数的方法:
In [1]: df.sum(axis=1).order(ascending=False).head(3)
Out[1]:
Banana 219
Grape 201
Apple 151
您可以使用该索引来引用原始数据集:
In [2]: idx = df.sum(axis=1).order(ascending=False).head(3).index
In [3]: df.ix[idx]
Out[3]:
day1 day2 day3
Banana 56 76 87
Grape 89 45 67
Apple 40 13 98
<强> [编辑] 强>
order()
现已弃用。 sort_values()
可以在这里使用。
df.sum(axis=1).sort_values(ascending=False).head(3)