热线电话:13121318867

登录
2019-02-12 阅读量: 712
怎么实现虚拟编码与自定义值权重

我的形状数据如下:

pd.DataFrame({'id': [1,2,3], 'item': ['item_a', 'item_a', 'item_b'],

'score': [1,-1,1]})

id item score

1 item_a 1

2 item_a -1

3 item_b 1

我想获取项目列的虚拟代码,但我希望它们根据分数列中的值进行评分。如果没有观察,我想要一个0估算。像这样:

id item_a item_b

1 1 0

2 -1 0

3 0 1

如你所见,我想捕获用户id 1喜欢item_a,id 2不喜欢item_a,并且用户3没有与item_a交互。id列每行不唯一 - 例如,用户ID 3可能喜欢item_a,并且将在原始数据帧中记录为新行。

我已尝试在pandas中使用get_dummies,但该方法仅计算“item”列中观察值的数量,但未考虑得分值。

解决办法:

可以使用set_index + 拆散:

import pandas as pd

df = pd.DataFrame({'id': [1,2,3], 'item': ['item_a', 'item_a', 'item_b'],

'score': [1,-1,1]})

print(df.set_index(['id', 'item'])['score'].unstack(fill_value=0))

产量

item item_a item_b

id

1 1 0

2 -1 0

3 0 1

如果要完全匹配输出,只需添加以下行:

result.columns.name = None

result.reset_index(inplace=True)

产量

id item_a item_b

0 1 1 0

1 2 -1 0

2 3 0 1

39.7527
1
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子