将列从一个数据框映射到另一个

时间:2018-11-27 18:08:32

标签: python dictionary

我想将df2 ['col2']中的值映射到df ['col1']:

df        col1   col2
0       w      a
1       1      2
2       2      3

我想使用数据框中的一列作为字典来获取:

        col1   col2
0       w      a
1       A      2
2       B      3

但是数据字典只是df2中的一列,看起来像

df2        col1   col2     
1       1      A
2       2      B

我尝试使用此功能:

di = {"df2['col1']: df2['col2']}
final = df1.replace({"df2['col2']": di})

但是出现错误:TypeError: 'Series' objects are mutable, thus they cannot be hashed

我大约有200,000行。任何帮助将不胜感激。

编辑:

样本字典看起来像di = {1: "A", 2: "B"},但在df2['col1']: df2['col2']中。我有20万多行,是否可以将df2['col1']: df2['col2']转换为元组,等等?

1 个答案:

答案 0 :(得分:0)

您可以基于df2的col1:col2构建查找字典,然后使用其替换df1.col1中的值。

import pandas as pd
df1 = pd.DataFrame({'col1':['w',1,2],'col2':['a',2,3]})
df2 = pd.DataFrame({'col1':[1,2],'col2':['A','B']})

print(df1)
#  col1 col2
#0    w    a
#1    1    2
#2    2    3

print(df2)
#   col1 col2
#0     1    A
#1     2    B

dataLookUpDict = {row[1]:row[2] for row in df2[['col1','col2']].itertuples()}
final = df1.replace({'col1': dataLookUpDict})

print(final)
#  col1 col2
#0    w    a
#1    A    2
#2    B    3