首页 > 解决方案 > 根据条件和唯一值添加排名列

问题描述

我想根据 3 个条件添加排名列:公司名称、品牌、年份。

这是我的原始数据:

  CompanyName        Brand  Year
0           A        Razer  2019
1           A  SteelSeries  2019
2           A     Logitech  2019
3           A        Razer  2018
4           A  SteelSeries  2018
5           B     Logitech  2019
6           B         Asus  2019
7           B         Benq  2018
8           C         Asus  2017
9           C        Razer  2017

这是我想要的结果:(可能会让你感到困惑)

  CompanyName        Brand  Year  Rank
0           A        Razer  2019     1
1           A  SteelSeries  2019     2
2           A     Logitech  2019     3
3           A        Razer  2018     1
4           A  SteelSeries  2018     2
5           B     Logitech  2019     1
6           B         Asus  2019     2
7           B         Benq  2018     1
8           C         Asus  2017     1
9           C        Razer  2017     2

我尝试过的代码,但它只循环独特的品牌:

df1 = pd.DataFrame()
for i,brands in enumerate(df['Brand'].unique):
     df1.loc[i-1,'Rank'] = i
     df1.loc[i-1, 'Brand']= brands

df = df.merge(df1,on='Brand',how='inner')

标签: pythonpandas

解决方案


下次请按以下格式提供文本数据框 -

请查看如何制作良好的可重现 pandas 示例

 CompanyName        Brand  Year
0           A        Razer  2019
1           A  SteelSeries  2019
2           A     Logitech  2019
3           A        Razer  2018
4           A  SteelSeries  2018
5           B     Logitech  2019
6           B         Asus  2019
7           B         Benq  2018
8           C         Asus  2017
9           C        Razer  2017

很简单,您可以按您的CompanyNameYear列进行分组并应用累积计数:

df['Rank'] = df.groupby(['CompanyName','Year']).cumcount()+1
print(df)
      CompanyName        Brand  Year  Rank
0           A        Razer  2019     1
1           A  SteelSeries  2019     2
2           A     Logitech  2019     3
3           A        Razer  2018     1
4           A  SteelSeries  2018     2
5           B     Logitech  2019     1
6           B         Asus  2019     2
7           B         Benq  2018     1
8           C         Asus  2017     1
9           C        Razer  2017     2

推荐阅读