python - 是否有一个 Python 函数可以根据重复的 id 计算权重?
问题描述
我有一个数据集,其中行 = 客户,列 = 产品。根据订单数量,每个客户可能有多个行。
目标 = 具有权重的新列
例子:
ID Weight
1 1
2 1/2
2 1/2
有它的功能吗?
解决方案
您可以使用groupby
来获取每个列表中的元素数量,然后将 1 除以该值以获得每行的权重。
df = pd.DataFrame({'a': {0: 1, 1: 0, 2: 0, 3: 2, 4: 2, 5: 0, 6: 2, 7: 1, 8: 0, 9: 1}})
df['dupweight'] = 1 / df.groupby('a')['a'].transform(len)
df.sort_values('a')
a dupweight
1 0 0.250000
2 0 0.250000
5 0 0.250000
8 0 0.250000
0 1 0.333333
7 1 0.333333
9 1 0.333333
3 2 0.333333
4 2 0.333333
6 2 0.333333