我有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中进行循环以添加细胞。
。,但我想在不使用循环的情况下应用方法,并尽可能使用大熊猫。
您可以尝试以下方法:
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