我有一个带有“ OfferID”,“ SiteID”和“ CatgeoryID”列的数据框,它们应该表示网站上的在线广告。然后,我想为净发起人得分添加一个名为“ NPS”的新列。值应在1到10之间随机指定,但是在OfferID,SideID和CatgeoryID相同的情况下,它们的NPS值必须相同。我曾想过使用一个字典,其中NPS是关键,而不同ID的对是值,但是我还没有找到一种很好的方法来做到这一点。
有什么建议吗?
提前致谢。阿丽娜(Alina)
最简单的方法是首先删除所有重复项;你可以使用以下方法执行此操作:
uniques = df[['OfferID', 'SideID', 'CategoryID']].drop_duplicates(keep="first")
之后,你可以执行以下操作(请注意,你的随机值不是唯一的):
uniques['NPS'] = [random.randint(0, 100) for x in uniques.index]
进而 :
df = df.merge(uniques, on=['OfferID', 'SideID', 'CategoryID'], how='left')