根据条件和唯一值添加排名列

2024-05-17 03:43:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我想增加排名栏根据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')

Tags: steelseriesdf条件yearlocdf1品牌rank
1条回答
网友
1楼 · 发布于 2024-05-17 03:43:13

请下次提供以下格式的文本数据帧-

请复习How to make good reproducible pandas examples

 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

相关问题 更多 >