看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
本需求是一些不规则文本的信息,需要抽取出关键信息来比对两个型号是否属于同一种型号。主要用到用文本的处理方法和调用函数进行判断。
本需求的数据如下:
import pandas as pd
'''
规格型号 货物型号
QJ-304 QJ304/305
Z4Q Z4Q/Z5Q
Z1Q M1Q
'''
# 先复制上边的数据
df = pd.read_clipboard()
df # ... 读取数据
规格型号中的连字符可有可无,货物型号用斜杠隔开,现在需要在规格型号、货物型号中是否有相同的型号。
先将连字符和斜杠去除:
df.apply(lambda s: s.str.replace('-','').str.split('/'))
'''
规格型号 货物型号
0 [QJ304] [QJ304, 305]
1 [Z4Q] [Z4Q, Z5Q]
2 [Z1Q] [M1Q]
'''
最后提取型号,并进行比对:
(
df.apply(lambda s: s.str.replace('-','').str.split('/'))
.assign(规格型号=lambda d: d.规格型号.str[0])
.assign(label=lambda d: d.apply(lambda s: s.规格型号 in s.货物型号, axis=1))
.assign(label=lambda d: d.label.map({True:'相同', False: '不相同'}))
)
'''
规格型号 货物型号 label
0 QJ304 [QJ304, 305] 相同
1 Z4Q [Z4Q, Z5Q] 相同
2 Z1Q [M1Q] 不相同
'''
我们增加了 label 列来标识型号是否相同。
(完)
更新时间:2024-08-18 15:38:04 标签:python pandas 检测