检查一个数据帧中的值是否存在于另一个数据帧中

2024-05-16 12:16:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧。

Df1 = pd.DataFrame({'name': ['Marc', 'Jake', 'Sam', 'Brad']
Df2 = pd.DataFrame({'IDs': ['Jake', 'John', 'Marc', 'Tony', 'Bob']

我想遍历Df1['name']中的每一行,并检查每个名称是否在Df2['IDs']中的某个位置。

如果名称在其中,则结果应返回1;如果名称不同,则结果应返回0:

Marc  1 
Jake  1
Sam   0 
Brad  0

谢谢你。


Tags: 数据name名称idsdataframesammarcjohn
3条回答

使用isin

Df1.name.isin(Df2.IDs).astype(int)

0    1
1    1
2    0
3    0
Name: name, dtype: int32

在数据框中显示结果

Df1.assign(InDf2=Df1.name.isin(Df2.IDs).astype(int))

   name  InDf2
0  Marc      1
1  Jake      1
2   Sam      0
3  Brad      0

在序列对象中

pd.Series(Df1.name.isin(Df2.IDs).values.astype(int), Df1.name.values)

Marc    1
Jake    1
Sam     0
Brad    0
dtype: int32

这是一条路。转换为O(1)查找集,并使用astype(int)将布尔值表示为整数。

values = set(Df2['IDs'])

Df1['Match'] = Df1['name'].isin(values).astype(int)

这应该做到:

Df1 = Df1.assign(result=Df1['name'].isin(Df2['IDs']).astype(int))

相关问题 更多 >