我有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循环和使用熊猫。
答案 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