我想合并“Name”列上的两个dfs。但是,其中一个可以是子字符串或完全等于另一列。为此,我使用了
df1 = pd.DataFrame(
{
'Name': ['12,5mg/0,333ml(37,5mg/ml)', 'ad', 'aaa'],
}
)
df2 = pd.DataFrame(
{
'Name': ['12,5mg/0,333ml(37,5mg/ml)', 'ad', 'aaaa'],
}
)
str_match = "({})".format("|".join(df1.Name))
df2.merge(df1,
left_on=df2.Name.str.extract(str_match)[0],
right_on="Name", how='outer')
“ad”、“aaa”、“aaaa”值已正确合并。但是,值“12,5 mg/0,333 ml(37,5 mg/ml)”出现问题(很可能是由于特殊字符)。What I got with this code snippet
我试过re.espace(),但是没有效果。我该怎么解决这个问题?
2条答案
按热度按时间km0tfn4u1#
你需要对任何特殊字符进行转义,我也会只保留转义字符串的不同值(如果有很多重复的话,为了简化正则表达式),并事先编译模式:
ehxuflar2#
我觉得你应该做的是:
其给出: