繁体   English   中英

如何将两个不同的数据框 df1 df2 与特定列(列 w)进行比较,并从 df2 更新 df1 中匹配的行列 AD

[英]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

df1
A   B    C  D  E  F  
1   xyz  y  z  0  1
1   xab  z  z  0  1
2   xyz  x  p  1  1
3   xmn  m  q  2  1
3   xyx  n  r  3  1

df2
A   B    C  D  E  F  
1   xyz  x  z  4  1
1   xab  y  q  3  2
2   xyz  z  p  8  3
3   xmn  q  m  1  4
3   xyx  r  r  32  5

预计 Output DF1

df1
A   B    C  D  E  F  
1   xyz  y  z  4  1
1   xab  z  z  4  1
2   xyz  x  p  8  1
3   xmn  m  q  3  1
3   xyx  n  r  32  1

我试过df1.combine_first(df2)没有按预期工作

查看您的 output 我假设您想要合并数据集。 . . ?

import pandas as pd

d = {'A': [1, 1, 2, 3, 3], 
     'B': ['xyz', 'xab', 'xyz', 'xmn', 'xyx'],
     'C': ['y', 'z', 'x', 'm', 'n'],
     'D': ['z', 'z', 'p', 'q', 'r'],
     'E': [0, 0, 1, 2, 3],
     'F': [1, 1, 1, 1, 1]}
df1 = pd.DataFrame(data=d)
d = {'A': [1, 1, 2, 3, 3], 
     'B': ['xyz', 'xab', 'xyz', 'xmn', 'xyx'],
     'C': ['x', 'y', 'z', 'q', 'r'],
     'D': ['z', 'q', 'p', 'm', 'r'],
     'E': [4, 3, 8, 1, 32],
     'F': [1, 2, 3, 4, 5]}
df2 = pd.DataFrame(data=d)

df1 = df1.merge(df2[['D', 'E']], how='inner', on='D')
df1['E'] = df1['E_y']
del df1['E_x'], df1['E_y']

Output

Out[41]: 
   A    B  C  D  F   E
0  1  xyz  y  z  1   4
1  1  xab  z  z  1   4
2  2  xyz  x  p  1   8
3  3  xmn  m  q  1   3
4  3  xyx  n  r  1  32

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM