Python 将数据帧(df1)行值与另一数据帧(df2)列匹配,并更新数据帧(df1)中不同列的行
我有2个数据帧,第一个DF1如下所示Python 将数据帧(df1)行值与另一数据帧(df2)列匹配,并更新数据帧(df1)中不同列的行,python,pandas,dataframe,Python,Pandas,Dataframe,我有2个数据帧,第一个DF1如下所示 JID JRSubUsageLabel_16 SUB_USAGE_16 22 6223 JR_BOne_CY16 NaN 26 6510 JR_S_CY16 NaN 59 11932 JR_B_CY16 NaN 70 14242 JR_B_CY16 NaN JID JRLab
JID JRSubUsageLabel_16 SUB_USAGE_16
22 6223 JR_BOne_CY16 NaN
26 6510 JR_S_CY16 NaN
59 11932 JR_B_CY16 NaN
70 14242 JR_B_CY16 NaN
JID JRLabel_16 SUB_USAGE_16
22 6223 JR1_B_CY16 5
26 6510 JR1_S_CY16 6
59 11932 JR1_B_CY16 1
70 14242 JR1_B_CY16 2
第二个数据帧df2如下所示
JID JR1_B_CY16 JR_CY16
1 1457 NaN NaN
2 1530 NaN NaN
3 1535 5 NaN
4 2035 NaN NaN
5 6223 5 NaN
6 6510 1.0 6
39 11932 1.0 NaN
40 12021 NaN NaN
41 12056 NaN NaN
42 14234 2 1.0
我想根据JID列和JR1SubUsageLabel_16列值更新我的DF1数据帧。JID是两个数据帧中的匹配列。在DF1中,JR1SubUsageLabel_16列值变为DF2列。因此,其中一列的DF2也与DF1 JR1SubUsageLabel_16列值匹配。它应该如下所示
JID JRSubUsageLabel_16 SUB_USAGE_16
22 6223 JR_BOne_CY16 NaN
26 6510 JR_S_CY16 NaN
59 11932 JR_B_CY16 NaN
70 14242 JR_B_CY16 NaN
JID JRLabel_16 SUB_USAGE_16
22 6223 JR1_B_CY16 5
26 6510 JR1_S_CY16 6
59 11932 JR1_B_CY16 1
70 14242 JR1_B_CY16 2
我试图使用lambda更新此内容,但mapping无法准确确定如何更新此内容。有人能帮我吗
提前感谢一种方法是合并:
输出:
JID JR1SubUsageLabel_16 SUB_USAGE_16
0 6223 JR1_BioOne_CY16 5.0
1 6510 JR1_Springer_CY16 6.0
2 11932 JR1_BioOne_CY16 1.0
3 14242 JR1_BioOne_CY16 NaN
一种方法是合并:
输出:
JID JR1SubUsageLabel_16 SUB_USAGE_16
0 6223 JR1_BioOne_CY16 5.0
1 6510 JR1_Springer_CY16 6.0
2 11932 JR1_BioOne_CY16 1.0
3 14242 JR1_BioOne_CY16 NaN
在第二个数据帧上使用pd.melt,然后使用left join获取第三列在第二个数据帧上使用pd.melt,然后使用left join获取第三列