比较2个数据框列,如果单元格数据匹配,则在一个数据框中添加新列为“是”或“否”

时间:2019-06-27 19:47:16

标签: python pandas dataframe

我有2个数据帧,如下所示:

df1(main data)
UID    SG
1      A
2      B
3      C
4      D
5      E

df2
UID    AN    SG
1      x      A
3      y      C
2      z      B
1      xy     A
3      v      C

现在,我想向df1添加一个新列,例如“ isPresent”。如果df2中存在来自df1的UID,则此列将为“是”,如果df2中不存在UID,则此列将为“否”。所以我的df1最终看起来像这样,

df1
UID    SG    isPresent
1      A      Yes
2      B      Yes
3      C      Yes
4      D      No
5      E      No

我的方法是从两个数据帧中获取UID的交集,然后在df1中使用for循环逐个单元地添加数据。

但我想应用一种方法,尽可能不使用for循环和使用熊猫。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

import pandas as pd
df1 = pd.DataFrame({'UID':[1, 2, 3, 4, 5], 'SG':['A', 'B', 'C', 'D', 'E']})
df2 = pd.DataFrame({'UID':[1, 3, 2, 1, 3], 'AN':['x', 'y', 'z', 'xy', 'v'], 'SG':['A', 'C', 'B', 'A', 'C']})
df1['isPresent'] = df1['UID'].isin(df2['UID'])

或者,尝试以下操作:

df1['isPresent'] = df1.UID.isin(df2.UID)

输出:

  SG  UID  isPresent
0  A    1       True
1  B    2       True
2  C    3       True
3  D    4      False
4  E    5      False