Python 如何使用两个数据帧替换熊猫?
我试图用另一个df的值替换df上的值 第一个数据帧: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
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值被解释为一个数据帧“切片”,而不是这种类型的替换操作所需的数字