我有两个这样的数据框:
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
答案 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'}