我想使用brandmap数据中的“ PH”列和临时数据中的“ product_hierarchy”合并两个数据框。 “ PH”列具有“ product_hierarchy”中字符串的长度(4、7、11和15)的子字符串。如何使用这些列和子字符串匹配来合并这两个数据帧?
答案 0 :(得分:0)
有点复杂,但可以与str.extract
结合使用
import pandas as pd
df_ref = pd.DataFrame({"PH":["XXST", "XX7T"], "ValA": [1,2], "ValB": ["foo","bar"]})
df = pd.DataFrame({"product_hierarchy":["XXSTSDASD", "XX7TDSADASDASD", "XXSTHD", "XX7TDFDF"],
"Val":["foo", "bar", "baz", "bar"]})
str_match = "({})".format("|".join(df_ref.PH))
df.merge(df_ref, left_on=df.product_hierarchy.str.extract(str_match)[0], right_on="PH")
输出:
product_hierarchy Val PH ValA ValB
0 XXSTSDASD foo XXST 1 foo
1 XXSTHD baz XXST 1 foo
2 XX7TDSADASDASD bar XX7T 2 bar
3 XX7TDFDF bar XX7T 2 bar