使用Python,我想比较两个pandas数组df 1和df 2,df 1和df 2中的数据如下所示。
df 1框架:
| 数据库|表|柱|数据类型|
| --|--|--|--|
| DEV|员工|EmpNo|整数|
| DEV|员工|EmpName|字符串|
| DEV|经理|MngrNo|整数|
| DEV|经理|MngrName|字符串|
df 2框架:
| 数据库|表|柱|数据类型|
| --|--|--|--|
| PROD|员工|EmpNo|双|
| PROD|员工|EmpName|字符串|
| PROD|经理|MngrNo|整数|
| PROD|经理|MngrName|字符串|
| PROD|经理|MngrExp|双|
我想比较df 1和df 2的数据框,但是在比较的时候我想排除“Database”列,只比较两个数据框中其余的列值。因此我的最终结果应该像下面的数据框compared_df。
compared_df查询框应该有一个额外的列,它指示给定的行是否在两个查询框中都有匹配的记录,或者只在其中一个查询框中存在,而忽略提到的列值。
compared_df:
| 数据库|表|柱|数据类型|比较结果|
| --|--|--|--|--|
| DEV|员工|EmpNo|整数|仅在DF 1中|
| DEV|员工|EmpName|字符串|两|
| DEV|经理|MngrNo|整数|两|
| DEV|经理|MngrName|字符串|两|
| PROD|员工|EmpNo|双|仅在DF 2中|
| PROD|员工|EmpName|字符串|两|
| PROD|经理|MngrNo|整数|两|
| PROD|经理|MngrName|字符串|两|
| PROD|经理|MngrExp|双|仅在DF 2中|
我试着删除“Database”列,后来做了pandas merge,但在最后的compared_df中,我可以得到删除的列信息。也试过比较函数,但无法实现这一点,因为有时两个数组中的列数可能不同。
1条答案
按热度按时间vbopmzt11#
你能稍微不同地看待这些信息吗?
让我们使用
pd.DataFrame.compare
,字符串
输出量:
型
其中所有NaN均为两个表中的值。