比较 Pandas 中的数据

Comparing Data in Pandas

我只是想获取一些数据并重新排列。 这是我的数据集,显示了食物和他们在不同年份收到的分数。 我想做的是找到平均得分最低和最高的食物,并跟踪它们多年来的得分。

下一部分是我有点卡住的地方: 我需要显示原始数据集中的最大和最小食物,这将显示所有列 - 食物、年份、分数。这是我尝试过的方法,但它不起作用:

menu[menu.Food == Max & menu.Food == Min]

基本上我希望它在数据框中显示如下所示的内容,因此我可以绘制一些图表(即我想制作一个线图,在 x 轴上显示年份,在 y 轴上显示分数-轴并绘制得分最低的食物和得分最高的食物:

如果你们知道任何其他方法,请告诉我!

任何帮助将不胜感激

您可以 select 每个 year 的第一行和最后一行 Series.duplicated with invert mask and chain by | for bitwise OR, filter in boolean 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()]