Python 3.x 根据条件将一个数据帧的一列与另一个数据帧连接起来
我有两个数据帧,df1和df2,如下所示: df1:Python 3.x 根据条件将一个数据帧的一列与另一个数据帧连接起来,python-3.x,pandas,Python 3.x,Pandas,我有两个数据帧,df1和df2,如下所示: df1: Name Code Title_num 0 Title_1 0 TN_1234_4687 1 Title_2 0 TN_1234_7053 2 off_1 18301 TN_1234_1915 3 off_2 18302 TN_1234_7
Name Code Title_num
0 Title_1 0 TN_1234_4687
1 Title_2 0 TN_1234_7053
2 off_1 18301 TN_1234_1915
3 off_2 18302 TN_1234_7068
4 off_3 18303 TN_1234_1828
A_Code T_Code
0 000000086 18301
1 000000126 18302
2 000001236 18303
3 000012346 18938
4 000123456 18910
5 000123457 18301
A_Code T_Code Title_num
0 000000086 18301 TN_1234_1915
1 000000126 18302 TN_1234_7068
2 000001236 18303 TN_1234_1828
3 000012346 18938 NaN
4 000123456 18910 NaN
5 000123457 18301 TN_1234_1915
df2:
Name Code Title_num
0 Title_1 0 TN_1234_4687
1 Title_2 0 TN_1234_7053
2 off_1 18301 TN_1234_1915
3 off_2 18302 TN_1234_7068
4 off_3 18303 TN_1234_1828
A_Code T_Code
0 000000086 18301
1 000000126 18302
2 000001236 18303
3 000012346 18938
4 000123456 18910
5 000123457 18301
A_Code T_Code Title_num
0 000000086 18301 TN_1234_1915
1 000000126 18302 TN_1234_7068
2 000001236 18303 TN_1234_1828
3 000012346 18938 NaN
4 000123456 18910 NaN
5 000123457 18301 TN_1234_1915
其中,df2中的T_代码与df1中的代码相同。我想将df1中的列Title_num连接到df2
例如,如果df2中的'T_Code'与df1中的'Code'匹配,我希望将列df1['Title_num']中的值加入df2。如果该值不存在,则应填充NaN
预期输出(联接后的df2):
Name Code Title_num
0 Title_1 0 TN_1234_4687
1 Title_2 0 TN_1234_7053
2 off_1 18301 TN_1234_1915
3 off_2 18302 TN_1234_7068
4 off_3 18303 TN_1234_1828
A_Code T_Code
0 000000086 18301
1 000000126 18302
2 000001236 18303
3 000012346 18938
4 000123456 18910
5 000123457 18301
A_Code T_Code Title_num
0 000000086 18301 TN_1234_1915
1 000000126 18302 TN_1234_7068
2 000001236 18303 TN_1234_1828
3 000012346 18938 NaN
4 000123456 18910 NaN
5 000123457 18301 TN_1234_1915
为此,我将df1中的列代码重命名为“T_code”,以便与df2上的名称匹配。然后我运行了以下代码:
df2.merge(df1,on='T-Code',how='left')
这导致以下错误:“T#U代码”#检查重复项
现在,需要注意的是在df2中,重复的T_代码将存在,而在df1中,代码是唯一的。我希望df2中的Title_num值始终基于T_代码值显示[检查预期输出的第5行。T_代码值与第1行相同]
请告诉我执行此操作的方法。非常感谢您的帮助 你好,这个问题已经回答了 谢谢你,祝你好运。我最后做了以下工作:
df2=pd.merge(df2, df1,left_on='T_Code', right_on='Code', how='left')
df2.drop(columns =['Name', 'Code'])