我有一个DF,列有“区域”、“国家”、“年份”、“年度等级”。
我需要按地区和国家分组,并为每个国家计算2016-2019年“Yearly_rank”的变化。
df = pd.DataFrame([{'Region': 'west europe', 'Country': 'Finland', 'Year': 2019, 'Yearly_rank': 1}, {'Region': 'west europe', 'Country': 'Denmark', 'Year': 2019, 'Yearly_rank': 2}, {'Region': 'west europe', 'Country': 'Norway', 'Year': 2019, 'Yearly_rank': 3}, {'Region': 'west europe', 'Country': 'Iceland', 'Year': 2019, 'Yearly_rank': 4}, {'Region': 'west europe',“国家”:“荷兰”、“年度”:2019年、“年度排名”:5}、{“区域”:“西欧”、“国家”:“瑞士”、“年”:2019年、“年度级别”:6}、{“区域”:“西欧”、“国家”、“瑞典”、“年份”:2019、“年度等级”:7}、{“区域”:“澳大利亚和新西兰”、“国家”:“新西兰”,“年份”:2019年,“年度等级”:8},{“区域”:“北美”,“国家”:“加拿大”,“年份”:2019年,“年度等级”:9},{“区域”:“西欧”,“国家”:“奥地利”,“年份”:2019年,“年度排名”:10}]
发布于 2022-09-11 13:20:47
试试这个:
cond = df["Year"].isin([2016, 2019])
change = df[cond].sort_values("Year").groupby(["Region", "Country"])["Yearly_rank"].diff()
df.assign(change=change).sort_values("change").groupby("Region").head(1)https://stackoverflow.com/questions/73679576
复制相似问题