熊猫加入元组和冻结字段

时间:2018-02-11 11:50:59

标签: python pandas tuples

我想在共同的现场产品上加入。但是这个公共字段在两个数据帧中表示为不同的模式,如下所示:

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')

1 个答案:

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