我想将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']
转换为元组,等等?
答案 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