![](/img/trans.png)
[英]how to compare two different data frames df1 df2 with specific column ( column w) and update the matched rows column AD in df1 from df2
[英]Match a pandas Data frame (df1) row value to another Data frame (df2) column and update a rows of different column in Data frame (Df1)
我有 2 个数据帧 1st (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
第二个数据框(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 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 来更新它,而映射无法确切地知道如何更新它。 谁能帮帮我??
提前致谢
一种方法是merge
:
s = df2.melt('JID',value_name='SUB_USAGE_16',var_name='JR1SubUsageLabel_16')
df1.drop('SUB_USAGE_16', axis=1).merge(s, on = ['JID','JR1SubUsageLabel_16'], how='left')
Output:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.