如何将两个数据框之间的多列压缩到字典对象中?
Posted
技术标签:
【中文标题】如何将两个数据框之间的多列压缩到字典对象中?【英文标题】:How to zip multiple columns between two dataframes into a dictionary object? 【发布时间】:2019-09-08 22:17:24 【问题描述】:我有两个这样的数据框:
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】:字典只能有 1 个键和 1 个值,当您像这样压缩多个列时,您要求 python 2 创建超过 2 个序列元素,这是不可能的。您可以改为创建第一个 dict 并使用另一个更新它:
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'
【讨论】:
以上是关于如何将两个数据框之间的多列压缩到字典对象中?的主要内容,如果未能解决你的问题,请参考以下文章
R 中merge()函数匹配数据或根据一列或多列来合并两个数据框