在下面的代碼中,每個“Person”都有一個對應的“Sales”值,但是當我執行print(compData.max())“Vanessa”時,得到的值是“340”,它在初始的“df”中屬于“Amy”import numpy as npimport pandas as pddata = {'Company':['GOOG','GOOG','MSFT','MSFT','FB','FB'], 'Person':['Sam','Charlie','Amy','Vanessa','Carl','Sarah'], 'Sales':[200,120,340,124,243,350]}df = pd.DataFrame(data)compData = df.groupby('Company')print(df)print(compData.max())print(df.loc[3])這是輸出: Company Person Sales0 GOOG Sam 2001 GOOG Charlie 1202 MSFT Amy 3403 MSFT Vanessa 1244 FB Carl 2435 FB Sarah 350 Person SalesCompany FB Sarah 350GOOG Sam 200MSFT Vanessa 340Company MSFTPerson VanessaSales 124此外,當我執行print(df.loc[3])“Vanessa”時獲得正確的值
2 回答

隔江千里
TA貢獻1906條經驗 獲得超10個贊
我想為 Pibe_chorro 的答案添加一個替代解決方案,它直接為您提供每家公司的最大銷售額和銷售人員,包括原始索引:
compData.apply(lambda x: x[x.Sales == x.Sales.max()]).reset_index(level=[0])
這給你:
Company Person Sales
5 FB Sarah 350
0 GOOG Sam 200
2 MSFT Amy 340
如果需要,您可以使用pd.DataFrame.sort_index()按索引排序
compData.apply(lambda x: x[x.Sales == x.Sales.max()]).reset_index(level=[0]).sort_index()
結果:
Company Person Sales
0 GOOG Sam 200
2 MSFT Amy 340
5 FB Sarah 350
添加回答
舉報
0/150
提交
取消