如何将两个数据框之间的多列压缩到字典对象中?

时间:2019-04-18 14:37:45

标签: python-3.x pandas dictionary tuples

我有两个这样的数据框:

df1

colA  colB  
1      3
2      4

df2

colA  colB  
A      C
B      D

我想创建一个字典对象,该对象将允许我从df1映射新值并将其转换为df2的值。

我能够像这样在各列之间创建字典对象:

dict(zip(df1.colA.unique(),df2.colA.unique()))

这给了我输出:

{1:'A',2:'B'}

如何对多个列执行此操作,以创建一个用于转换新数据的大型词典?

我尝试添加多个这样的列:

dict(zip(df1.A.unique(),df2.A.unique(),df1.B.unique(),df2.B.unique()))

我收到错误消息:

ValueError: dictionary update sequence element #0 has length 4; 2 is required

1 个答案:

答案 0 :(得分:1)

字典只能有1个键和1个值,当您像这样压缩多列时,您要python 2创建两个以上的序列元素,这是不可能的。您可以改为创建第一个字典,并用另一个类似的代码对其进行更新:

d=dict(zip(df1.colA.unique(),df2.colA.unique()))
d.update(dict(zip(df1.colB.unique(),df2.colB.unique())))
print(d)

{1: 'A', 2: 'B', 3: 'C', 4: 'D'}