Python 如何使用两个数据帧替换熊猫?

Python 如何使用两个数据帧替换熊猫?,python,pandas,replace,Python,Pandas,Replace,我试图用另一个df的值替换df上的值 第一个数据帧: col1 col2 col3 col4 col5 type 0 NaN 4 7 14.0 0 B 1 3.0 2 6 11.0 5 B 2 4.0 4 0 22.0 7 C 3 5.0 6 11 8.0 3 A 4 9.0 0 3 6.0 8 B 5

我试图用另一个df的值替换df上的值

第一个数据帧:

   col1  col2  col3  col4  col5 type
0   NaN     4     7  14.0     0    B
1   3.0     2     6  11.0     5    B
2   4.0     4     0  22.0     7    C
3   5.0     6    11   8.0     3    A
4   9.0     0     3   6.0     8    B
5   2.0     1     6   NaN     2    A
6   6.0     5     7   9.0     9    B
   col1  col2
0     1   111
1     2   222
2     3   333
3     4   444
第二数据帧:

   col1  col2  col3  col4  col5 type
0   NaN     4     7  14.0     0    B
1   3.0     2     6  11.0     5    B
2   4.0     4     0  22.0     7    C
3   5.0     6    11   8.0     3    A
4   9.0     0     3   6.0     8    B
5   2.0     1     6   NaN     2    A
6   6.0     5     7   9.0     9    B
   col1  col2
0     1   111
1     2   222
2     3   333
3     4   444
我的代码是:

for i in df2["col1"]:
    new_value=df2.loc[df2["col1"]==i]["col2"]
    df=df.replace(i,new_value)
print(df)
但是DataFrame的值没有改变

这就是我希望最终得到的:

    col1  col2  col3  col4  col5 type
0    NaN   444     7  14.0     0    B
1  333.0   222     6  11.0     5    B
2  444.0  4414     0  22.0     7    C
3    5.0     6    11   8.0   333    A
4    9.0     0     3   6.0     8    B
5  222.0   111     6   NaN   222    A
6    6.0     5     7   9.0     9    B
我想你想要:

df1.replace(df2.set_index('col1')['col2'])
输出:

    col1  col2  col3  col4  col5 type
0    NaN   444     7  14.0     0    B
1  333.0   222     6  11.0     5    B
2  444.0   444     0  22.0     7    C
3    5.0     6    11   8.0   333    A
4    9.0     0   333   6.0     8    B
5  222.0   111     6   NaN   222    A
6    6.0     5     7   9.0     9    B
如果更换:

new_value=df2.loc[df2["col1"]==i]["col2"]
与:

它应该会起作用

之前,新的\u值被解释为一个数据帧“切片”,而不是这种类型的替换操作所需的数字