是否有Python函数根据重复的ID来计算权重?

时间:2019-07-19 12:36:04

标签: python pandas

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

目标=具有权重的新列

示例:

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

有功能吗?

1 个答案:

答案 0 :(得分:1)

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