我有两张table:
报表
Map表。
“version”列在这两个表中都很常见。
我试图在excel中执行类似于vlookup的功能。i、 e.对于报告表中的每个产品,我希望使用“版本”作为键,并从Map表中获取“答案”的值。
期望输出:
我正在使用以下代码执行此任务:
# import pandas
import pandas as pd
import csv
# read csv data
df1 = pd.read_csv('report.csv')
df2 = pd.read_csv('mapper.csv')
left_join = pd.merge(df1,
df2,
on ='Version',
how ='left')
print(left_join)
下面是我能够通过运行代码生成的输出片段。
然而,问题是我想对产品b说“不”。但是,由于我使用的Map器表具有通配符值“%”,因此无法获得所需的结果。i、 e.如果我想引用版本8.0.2510.8或8.0.2510.1000,我的Map器有一个通用字符串8.0.2510.%。我无法更改Map器。
如何使用通配符值执行字符串Map?
代码可以修改。使用Pandas是没有必要的。使用列表或字典的解决方案也可以
2条答案
按热度按时间whitzsjs1#
我试图创建一个附加的专栏,其中有一个“伟大的共同因素版本”,并称之为
gcf_version
. 它只是简单地将点号后面的最后一个字段删除Version
.输出如下:
你现在可以选择放弃什么和保留什么。
js5cn81o2#
我提出了这个解决方案,因为我找不到一种方法来直接在正则表达式上合并/加入2个 Dataframe 。
Map器
报告
这里我添加了一个新列,而不是使用
replace()
函数在上添加匹配值Answer
基于正则表达式的列之间的匹配Version
柱。注意,我已经替换了%
具有*
创建一个合适的正则表达式。输出
编辑
注意:此解决方案旨在通过提供的示例数据解决提供的问题。如果存在其他不同的通配符场景,则需要相应地更新正则表达式构建。只需更新更新的这一行
Version
列具有有效的匹配正则表达式。