匹配列名称不同的2个Excel表格的数据

我有两个Excel表格都放入pandas数据框。

例如:

1.csv EmployeeID | DOB | Age A | 12/11/1978 | 2 B | 12/09/1988 | 8 C | 12/02/1985 | 20 D | 11/11/1990 | 25 2.csv MemberIdentifier| DateofBirth| YOW A | 12/11/1978 | 2 B | 12/09/1988 | 8 C | 12/02/1985 | 20 result.csv EmployeeID | MemberIdentifier | DOB |DateofBirth| Exp | YOW A | A | 12/11/1978 | 12/11/1978| 2 | 2 B | B | 12/09/1988 | 12/09/1988| 8 | 8 C | C | 12/02/1985 | 12/02/1985| 20 | 20 D | NA | NA | NA | NA | NA 

现在我怎么得到一个结果比较两个基于数据而不是列名的基础上,因为列名可以是任何东西。

任何暗示或想法如何开始将是伟大的!

您需要参数left_onright_on与左连接merge

 df = pd.merge(df1, df2, left_on='EmployeeID', right_on='MemberIdentifier', how='left') print (df) EmployeeID DOB Age MemberIdentifier DateofBirth YOW 0 A 12/11/1978 2 A 12/11/1978 2.0 1 B 12/09/1988 8 B 12/09/1988 8.0 2 C 12/02/1985 20 C 12/02/1985 20.0 3 D 11/11/1990 25 NaN NaN NaN 

如果需要匹配两个DataFrames中的列, DataFrames使用:

 d = {} for col2 in df2.columns: for col1 in df1.columns: cond = df2[col2].isin(df1[col1]).all() if cond: d[col2] = col1 print (d) {'MemberIdentifier': 'EmployeeID', 'DateofBirth': 'DOB', 'YOW': 'Age'} 

最后你可以用dict重命名列:

 df2 = df2.rename(columns=d) print (df2) EmployeeID DOB Age 0 A 12/11/1978 2 1 B 12/09/1988 8 2 C 12/02/1985 20