我想将 df 的一列与其他 df 进行比较。列是名称和姓氏。我想检查一个数据框中的人是否在另一个数据框中。
如何比较不同数据框中的列?
数据挖掘
熊猫
数据框
                    2021-09-14 20:35:28
                
                    
                
            
        4个回答
            如果您想检查某个列上的相等值,比如说Name,您可以将merge两个 DataFrame 都设置为一个新的:
mergedStuff = pd.merge(df1, df2, on=['Name'], how='inner')
mergedStuff.head()
我认为这比where拥有大数据集更有效、更快。
df1.where(df1.values==df2.values).notna()
True条目显示共同元素。这也揭示了公共元素的位置,与merge.
isin您可以使用和仔细检查两个 df 之间常见和不同位置的确切数量value_counts()。
像那样:
df['your_column_name'].isin(df2['your_column_name']).value_counts()
结果:
True= 共同
False= 不同
比较两个不同列中的值
使用 set,在每列中获取唯一值。这两组的交集将在两列中提供唯一值。
例子:
df1 = pd.DataFrame({'c1': [1, 4, 7], 'c2': [2, 5, 1], 'c3': [3, 1, 1]})
 df2 = pd.DataFrame({'c4': [1, 4, 7], 'c2': [3, 5, 2], 'c3': [3, 7, 5]})
 set(df1['c2']).intersection(set(df2['c2']))
输出:
{2, 5}
比较两个数据框的列名
如果您尝试比较两个数据框的列名:
如果df1和df2是两个数据框:
set(df1.columns).intersection(set(df2.columns))
这将提供包含在两个数据框中的唯一列名。
例子:
df1 = pd.DataFrame({'c1': [1, 4, 7], 'c2': [2, 5, 1], 'c3': [3, 1, 1]})
df2 = pd.DataFrame({'c4': [1, 4, 7], 'c2': [3, 5, 2], 'c3': [3, 7, 5]})
set(df1.columns).intersection(set(df2.columns))
输出:
{'c2', 'c3'}
