繁体   English   中英

如何比较两个数据框并从列中查找匹配项(熊猫)

[英]How to compare two dataframes and find matches from columns (pandas)

假设我们有以下代码示例,其中我们创建了两个基本数据框:

import pandas as pd
 
# Creating Dataframes
a = [{'Name': 'abc', 'Age': 8, 'Grade': 3},
     {'Name': 'xyz', 'Age': 9, 'Grade': 3}]
 
df1 = pd.DataFrame(a)
b = [{'ID': 1,'Name': 'abc', 'Age': 8},
     {'ID': 2,'Name': 'xyz', 'Age': 9}]
 
df2 = pd.DataFrame(b)
 
# Printing Dataframes
display(df1)
display(df2)

我们得到以下数据集:

    Name   Age  Grade
0   abc    8    3
1   xyz    9    3


    ID   Name   Age
0   1    abc    8
1   2    xyz    9

当它们相交时,如何找到这些框架中不重复的列的列表? 也就是说,结果,我想获取以下列的名称: ['Grade', 'ID']

使用symmetric_difference

res = df2.columns.symmetric_difference(df1.columns)
print(res)

Output

Index(['Grade', 'ID'], dtype='object')

或者作为替代方案,使用set.symmetric_difference

res = set(df2.columns).symmetric_difference(df1.columns)
print(res)

Output

{'Grade', 'ID'}

@SashSinha 建议的第三种选择是使用快捷方式:

res = df2.columns ^ df1.columns

但从 pandas 1.4.3 开始,此问题发出警告:

未来警告:索引。 xor操作作为集合操作已被弃用,将来这将是一个匹配系列的逻辑操作。 异或 改用 index.symmetric_difference(other) 。 res = df2.columns ^ df1.columns

暂无
暂无

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

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