如何在熊猫中使用子字符串匹配来合并两个数据帧?

时间:2020-01-22 16:05:01

标签: python pandas

temp data

brandmap data

我想使用brandmap数据中的“ PH”列和临时数据中的“ product_hierarchy”合并两个数据框。 “ PH”列具有“ product_hierarchy”中字符串的长度(4、7、11和15)的子字符串。如何使用这些列和子字符串匹配来合并这两个数据帧?

1 个答案:

答案 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