在pandas中通过一列数据映射出另一列的几种思路和方法

如果一句话中出现某个品牌的关键词,那么就将该品牌进行提取,开始我的做法是写了很多elif,如下:

def brand_describe(x):
     if 'TRUM' in x.upper():
         return "通快"
     elif 'BYSTRONIC' in x.upper():
         return "百超"
     elif 'AMADA' in x.upper():
         return "AMADA"
     elif 'GWEIKE' in  x.upper():
     	return "金威刻"
  	 else:
        return "其他"

但是如果有新的品牌增加的时候就很难增加,于是我更换函数,先写一个品牌映射的字段,然后在函数中遍历字典,来匹配函数,如下:

def brand_describe(x):
    brand_mapping = {'TRUM': '通快', 'BYSTRONIC': '百超', 'AMADA': 'AMADA', 'GWEIKE': '金威刻'}
     # 遍历字典,查找匹配的品牌
    for brand, description in brand_mapping.items():
        if brand in x.upper():
            return description
    return "其他"

最后,使用apply()函数进行映射:

df['品牌'] = df['产品描述'].apply(brand_describe)

后来,我又想到一种品牌映射的方法,使用字典的items()方法可以直接取出key和value,通过产品描述中是否包含关键字来映射品牌

# 创建一个品牌映射字典
brand_mapping =  {'TRUM': '通快', 'BYSTRONIC': '百超', 'AMADA': 'AMADA', 'GWEIKE': '金威刻'}
# 遍历字典并更新数据框
for keyword, brand in brand_mapping.items():
    df.loc[df['产品描述'].str.contains(keyword), '品牌'] = brand

温馨提示:
上面代码中如果找不到包含的关键字,会显示为空,如果需要显示特定的字符如“其他”,需要在遍历前,将品牌这一列初始化为“其他”

df['品牌'] = '其他'

你可能感兴趣的:(数据分析,Python,pandas)