我想将 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'}