我想在共同的现场产品上加入。但是这个公共字段在两个数据帧中表示为不同的模式,如下所示:
df1 [frozensets]
Products Products1
0 (A, C) (B)
1 (A, B) (C)
2 (C, B) (A)
3 (A) (C, B)
4 (C) (A, B)
df2 [元组]
Region Products
France ('A','B')
France ('C')
France ('B','D')
France ('C','A','B')
France ('A','B')
在df2中,产品表示为元组,但不包含在df1中。有人可以帮助我将df1 ['Products']转换为元组,以便我可以进行此连接
s1 = pd.merge(df1, df2, how='left', left_on='Products',right_on='Products')
答案 0 :(得分:0)
因为元素不在字符串中(它们应该由逻辑构成),我们可以对它们进行类型转换并创建df1
个产品的新元组。
你可以尝试这样的事情
df_pros = df1['Products'] # or some another way to select all the products from df_1
df_mod = tuple(map(lambda x: (str(x[0]), str(x[1])) if len(x) == 2 else (str(x[0])), list(map(list, df_pros))))
s1 = pd.merge(df_mod, df2, how='left', left_on='Products',right_on='Products')