吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1148|回复: 17
收起左侧

[求助] python,用pandas合并2个dataframe问题

[复制链接]
kabin 发表于 2020-7-11 11:47
有2个表,第一个表叫【商品】,里面含有商品的信息,示例内容如下:
商品名称
康师傅方便面
统一方便面
飘柔洗发水

第二个表叫【商品分类】,里面含有商品的简称和分类信息,示例内容如下:
简称         大类             子类
方便面         食品饮料            方便食品
洗发             个人护理            洗发水


查【商品】表里的【商品名称】中,是否包含【商品分类】表里的【简称】,如果包含,就将大类和子类合并过去,示例内容如下。
商品名称         简称         大类             子类
康师傅方便面        方便面         食品饮料            方便食品
统一方便面            方便面         食品饮料            方便食品
飘柔洗发水           洗发             个人护理            洗发水

请问各位老师,怎么实现呢?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Gloomy丶奈何 发表于 2020-7-11 13:24
for 简称  in 简称list:
    if 简称 in 商品名称list:
        大类子类合并
sssr 发表于 2020-7-11 14:18
import pandas as pd


'''商品表'''
commodities = pd.DataFrame({'商品名称':['康师傅方便面', '统一方便面', '飘柔洗发水']})

'''商品分类表'''
commodity_classification = pd.DataFrame({'简称': ['方便面', '洗发'], '大类': ['食品饮料', '个人护理'], '子类': ['方便食品', '洗发水']})


''' 映射处理,构造键'''
commoditiesName_to_shortName = {
    '康师傅方便面': '方便面',
    '统一方便面': '方便面',
    '飘柔洗发水': '洗发'
}

commodities['简称'] = commodities['商品名称'].map(commoditiesName_to_shortName)

'''merge合并'''
goal = pd.merge(commodities, commodity_classification)

sssr 发表于 2020-7-11 14:36
考虑到数据中如有商品无简称的话,可以在merge操作中加上参数 how='outer'
 楼主| kabin 发表于 2020-7-11 14:53
sssr 发表于 2020-7-11 14:18
import pandas as pd

老师,感谢您的回答。考虑到数据量多(需要从外部导入数据,这一步我会),手工做映射处理会不方便。
我是想直接用简称里的词,比如【方便面】在商品名称里查到【康师傅方便面】和【统一方便面】包含该词,就将【方便面】对应的商品分类信息合并/关联过来。
sssr 发表于 2020-7-11 15:01
本帖最后由 sssr 于 2020-7-11 15:16 编辑
kabin 发表于 2020-7-11 14:53
老师,感谢您的回答。考虑到数据量多(需要从外部导入数据,这一步我会),手工做映射处理会不方便。
我 ...

编辑掉,看下面的
sssr 发表于 2020-7-11 15:05
本帖最后由 sssr 于 2020-7-11 15:15 编辑

commoditiesName_to_shortName = {}

for i in commodities['商品名称']:
    if '方便面' in i:
        commoditiesName_to_shortName     [    i    ]    = '方便面'
    elif '洗发' in i:
        commoditiesName_to_shortName     [    i    ]     = '洗发'
        
sssr 发表于 2020-7-11 15:06
sssr 发表于 2020-7-11 15:01
commoditiesName_to_shortName2 = {}

for i in commodities['商品名称']:

传过来出了问题,看下面的
sssr 发表于 2020-7-11 15:17
sssr 发表于 2020-7-11 15:05
commoditiesName_to_shortName = {}

for i in commodities['商品名称']:

好了,代码不知道咋回事,传过来就格式乱了,自己去掉空格就行
 楼主| kabin 发表于 2020-7-11 15:55
sssr 发表于 2020-7-11 15:05
commoditiesName_to_shortName = {}

for i in commodities['商品名称']:

老师:我是小白,您多见谅。
想把if '方便面' 里的【方便面】这个值,直接从commodity_classification里调用过来,怎么写? 麻烦您了,谢谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 14:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表