pandas:获取整个数据框中的最高值和行/列值?

时间:2018-06-14 17:25:08

标签: python pandas

我有一个pandas数据框,按部门按年销售:

 department    2001    2002    2003    ...
 Food          1300    1444    1573    ...
 Music         1370    1244    1173    ...

我希望在整个数据集中找到10个最高值,并查看每个数据集的部门和年份。

有什么方法可以同时找到它们吗?我知道如何获得每行(idxmax)和每列(idxmax(axis=1))中的最高值,但我不知道如何搜索整个数据帧。

1 个答案:

答案 0 :(得分:2)

你可以使用这样的东西(这里简单的3个案例):

>>> df.stack().sort_values(ascending=False).nlargest(3)

sports  2002    72
music   2001    67
sports  2001    54
dtype: int64

创建此示例:

import pandas as pd
import numpy as np
np.random.seed(444)
depts = ['food', 'music', 'sports']
years = list(range(2001, 2004))
df = pd.DataFrame(np.random.randint(0, 100, (3, 3)),
                  columns=years, index=depts)
print(df)
#         2001  2002  2003
# food       3    23     8
# music     67    52    12
# sports    54    72    41

如果需要,您还可以将.swaplevel()投入到结果系列中:

>>> df.stack().swaplevel().sort_values(ascending=False).nlargest(3)

2002  sports    72
2001  music     67
      sports    54