关于在python中向csv添加排名列的问题



我正在处理一个csv文件,我想添加一个排名列,当name列的值不同时,该列将重置。这是我的原始代码:

import pandas as pd
l = [{'sku': 'WD-0215', 'name': 'Sofa', 'price': '$1,299.00'}, 
{'sku': 'WD-1345', 'name': 'Sofa', 'price': '$1,399.00'},
{'sku': 'WD-0416', 'name': 'Sofa', 'price': '$1,199.00'},
{'sku': 'sfr20', 'name': 'TV', 'price': '$1,861.00'},
{'sku': 'sfr40', 'name': 'TV', 'price': '$1,561.00'}, 
{'sku': 'sfr30', 'name': 'TV', 'price': '$1,961.00'}
]
df = pd.DataFrame(l)
df["rank"]=""
for i in range(len(df.values)):    
df.iloc[i,3]=i+1
i+=1
df

这将创建具有从1到6的值的CCD_ 2列,但我的预期输出应该是这样的:

sku      name      price      rank
WD-0215     Sofa      $1299.00    1
WD-1345     Sofa      $1399.00    2
WD-0416     Sofa      $1199.00    3
sfr20       TV        $1861.00    1
sfr40       TV        $1561.00    2
sfr30       TV        $1961.00    3

您可以将groupbycumcount一起使用,以获得name:的每个值的累积计数

df['rank'] = df.groupby('name').cumcount() + 1

结果:

sku  name      price  rank
0   WD-0215  Sofa  $1,299.00     1
1   WD-1345  Sofa  $1,399.00     2
2   WD-0416  Sofa  $1,199.00     3
3     sfr20    TV  $1,861.00     1
4     sfr40    TV  $1,561.00     2
5     sfr30    TV  $1,961.00     3

相关内容

  • 没有找到相关文章