我只是想獲取一些資料并重新安排它。這是我的資料集,顯示了食物和他們在不同年份獲得的分數。我想做的是找到平均得分最低和最高的食物,并跟蹤它們多年來的得分。

下一部分是我有點卡住的地方:我需要顯示原始資料集中的最大和最小食物,該資料集將顯示所有列 - 食物、年份、分數。這是我嘗試過的,但它不起作用:
menu[menu.Food == Max & menu.Food == Min]
基本上我希望它在資料框中顯示類似下面的內容,所以我可以繪制一些圖表(即我想制作一個線圖,在 x 軸上顯示年份,在 y 軸上顯示分數并繪制得分最低的食物和得分最高的食物:

如果你們知道任何其他方法可以做到這一點,請告訴我!
任何幫助,將不勝感激
uj5u.com熱心網友回復:
您可以使用 invert mask 和 chain by yearfor bitwise選擇第一行和最后一行,過濾:Series.duplicated|ORboolean indexing
df1 = df[~df['year'].duplicated() | ~df['year'].duplicated(keep='last')]
使用groupby的解決方案:
df1 = df.groupby('year').agg(['first','last']).stack(1).droplevel(1).reset_index()
如果需要最小和最大每秒year:
df = df.sort_values(['year','food'])
df2 = df[~df['year'].duplicated() | ~df['year'].duplicated(keep='last')]
使用groupby的解決方案:
df2 = df.loc[df.groupby('year')['Score'].agg(['idxmax','idxmin']).stack()]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/447240.html
標籤:Python 熊猫 matplotlib 熊猫-groupby
