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

Mic*_*ael 8 python dataframe pandas

这是我的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
Run Code Online (Sandbox Code Playgroud)

我想创建一个新的DataFrame,包含最多三天的前3个水果.

apple三天的总和- 151,orange- 133,banana- 219,Pineapple- 43,grape- 201.
所以前三名成果是:1)banana; 2)grape; 3)apple.

这是预期的输出:

        day1   day2   day3
Banana    56     76     87
Grape     89     45     67
Apple     40     13     98
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做pandas.DataFrame

谢谢!

Zel*_*ny7 15

以下是通过总和获得前3天的指数的方法:

In [1]: df.sum(axis=1).order(ascending=False).head(3)
Out[1]:
Banana    219
Grape     201
Apple     151
Run Code Online (Sandbox Code Playgroud)

您可以使用该索引来引用原始数据集:

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
Run Code Online (Sandbox Code Playgroud)

[编辑]

order()现已弃用.sort_values()可以在这里使用.

df.sum(axis=1).sort_values(ascending=False).head(3)
Run Code Online (Sandbox Code Playgroud)

  • .order()现已弃用,因此pandas将打印警告.另一种方法是使用sort_values,可以安全地替换此用例. (4认同)