首页 > 解决方案 > 是否有一个 Python 函数可以根据重复的 id 计算权重?

问题描述

我有一个数据集,其中行 = 客户,列 = 产品。根据订单数量,每个客户可能有多个行。

目标 = 具有权重的新列

例子:

ID  Weight
1    1
2    1/2
2    1/2

有它的功能吗?

标签: pythonpandas

解决方案


您可以使用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

推荐阅读