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

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()函数匹配数据或根据一列或多列来合并两个数据框

如何将 python 对象(如字典)分配给 pandas 列

如何基于两列组合两个数据框? [复制]

基于两个数据帧中的多列将值从一个映射到另一个df

如何按多列过滤数据框?