获取`pandas.DataFrame`中列数最大的前三行?

时间:2013-12-09 20:36:19

标签: python pandas dataframe

这是我的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的总和 - 151orange - 133banana - 219,{{1 } - Pineapple43 - grape 所以前三名成果是:1)201; 2)banana; 3)grape

这是预期的输出:

apple

如何使用 day1 day2 day3 Banana 56 76 87 Grape 89 45 67 Apple 40 13 98

执行此操作

谢谢!

1 个答案:

答案 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)