比较 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()]
我只是想获取一些数据并重新排列。 这是我的数据集,显示了食物和他们在不同年份收到的分数。 我想做的是找到平均得分最低和最高的食物,并跟踪它们多年来的得分。
下一部分是我有点卡住的地方: 我需要显示原始数据集中的最大和最小食物,这将显示所有列 - 食物、年份、分数。这是我尝试过的方法,但它不起作用:
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()]