[英]pandas: get the highest values in an entire dataframe, and row/col values?
我有一個熊貓數據框,按部門按年銷售:
department 2001 2002 2003 ...
Food 1300 1444 1573 ...
Music 1370 1244 1173 ...
我想在整個數據集中找到10個最高值,並查看每個值的部門和年份。
有什么辦法可以同時找到兩者嗎? 我知道如何在每一行( idxmax
)和每一列( idxmax(axis=1)
)中獲得idxmax(axis=1)
,但是我不知道如何搜索整個數據幀。
您可以使用類似以下內容的示例(這里是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()
生成的Series中:
>>> df.stack().swaplevel().sort_values(ascending=False).nlargest(3)
2002 sports 72
2001 music 67
sports 54
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.