【发布时间】:2019-05-10 01:48:15
【问题描述】:
所以我有一个评论数据集,其中包含类似
的评论简直是最好的。我去年买了这个。还在用。没问题 面对迄今为止。惊人的电池寿命。在黑暗或广阔的环境中工作正常 白天。送给任何书迷的最佳礼物。
(这是来自原始数据集,我已删除所有标点符号并在我处理的数据集中全部小写)
我想要做的是将一些单词替换为 1(根据我的字典),将其他单词替换为 0。 我的字典是
dict = {"amazing":"1","super":"1","good":"1","useful":"1","nice":"1","awesome":"1","quality":"1","resolution":"1","perfect":"1","revolutionary":"1","and":"1","good":"1","purchase":"1","product":"1","impression":"1","watch":"1","quality":"1","weight":"1","stopped":"1","i":"1","easy":"1","read":"1","best":"1","better":"1","bad":"1"}
我希望我的输出如下:
0010000000000001000000000100000
我用过这段代码:
df['newreviews'] = df['reviews'].map(dict).fillna("0")
这总是返回 0 作为输出。我不想这样,所以我将 1 和 0 作为字符串,但尽管如此,我得到了相同的结果。 有什么建议可以解决这个问题吗?
【问题讨论】:
-
您没有在任何地方拆分字符串以使此映射正常工作,您还应该使用
dict作为变量名,因为它掩盖了 python 的内置dict类型。 -
@AChampion 如何拆分字符串以使地图工作?
-
发布您的
df['reviews']的可测试片段 -
您可能想要执行以下操作:
df.reviews.str.split().apply(lambda review: ''.join(d.get(word, '0') for word in review))假设您已经降低并删除了所有标点符号(并将dict重命名为d)。
标签: python python-3.x pandas dictionary dataframe