如何在pandas中做关键词映射[英] How to do keyword mapping in pandas

本文是小编为大家收集整理的关于如何在pandas中做关键词映射的处理方法,想解了如何在pandas中做关键词映射的问题怎么解决?如何在pandas中做关键词映射问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有关键字

India
Japan
United States
Germany
China

这里是示例数据框

id    Address 
1     Chome-2-8 Shibakoen, Minato, Tokyo 105-0011, Japan
2     Arcisstraße 21, 80333 München, Germany
3     Liberty Street, Manhattan, New York, United States
4     30 Shuangqing Rd, Haidian Qu, Beijing Shi, China
5     Vaishnavi Summit,80feet Road,3rd Block,Bangalore, Karnataka, India

我的目标是制造

id    Address                                                          India Japan United States  Germany China    
1     Chome-2-8 Shibakoen, Minato, Tokyo 105-0011, Japan              0     1     0              0       0                  
2     Arcisstraße 21, 80333 München, Germany                          0     0     0              1       0
3     Liberty Street, Manhattan, New York, USA                        0     0     1              0       0
4     30 Shuangqing Rd, Haidian Qu, Beijing Shi, China                0     0     0              0       1
5     Vaishnavi Summit,80feet Road,Bangalore, Karnataka, India        1     0     0              0       0

基本思想是创建关键字检测器,我正在考虑使用 str.contain 和 word2vec 但我无法获得逻辑

推荐答案

利用pd.get_dummies():

countries = df.Address.str.extract('(India|Japan|United States|Germany|China)', expand = False)
dummies = pd.get_dummies(countries)
pd.concat([df,dummies],axis = 1)

另外,最直接的方法是将国家/地区列在一个列表中并使用 for 循环,比如

countries = ['India','Japan','United States','Germany','China']
for c in countries:
    df[c] = df.Address.str.contains(c) * 1

但如果您有大量数据和国家/地区,它可能会很慢.

本文地址:https://www.itbaoku.cn/post/1727813.html