如何比较不同数据框中的列?

数据挖掘 熊猫 数据框
2021-09-14 20:35:28

我想将 df 的一列与其他 df 进行比较。列是名称和姓氏。我想检查一个数据框中的人是否在另一个数据框中。

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}


比较两个数据框的列名

如果您尝试比较两个数据框的列名:

如果df1df2是两个数据框: 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'}