2 回答
TA贡献1893条经验 获得超10个赞
使用in语句 if 是可能的测试而无需单独的 each ID:
df['Match'] = [str(x) in y for x, y in df[['ID','Multiple_IDs']].to_numpy()]
print (df)
ID Multiple_IDs Match
0 2128441 2128442, 2128443, 2128444, 2128441 True
1 2128447 2128446, 2128447 True
2 2128500 2128503, 2128508 False
要么:
df['Match'] = df.apply(lambda x: str(x['ID']) in x['Multiple_IDs'], axis=1)
print (df)
ID Multiple_IDs Match
0 2128441 2128442, 2128443, 2128444, 2128441 True
1 2128447 2128446, 2128447 True
2 2128500 2128503, 2128508 False
另一个想法是通过拆分值匹配:
df['Match'] = [str(x) in y.split(', ') for x, y in df[['ID','Multiple_IDs']].to_numpy()]
df['Match'] = df.apply(lambda x: str(x['ID']) in x['Multiple_IDs'].split(', '), axis=1)
TA贡献1846条经验 获得超7个赞
我将要做的
s=pd.DataFrame(df.Multiple_IDs.str.split(', ').tolist(),index=df.index).eq(df.ID.astype(str),axis=0).any(1)
Out[10]:
0 True
1 True
2 False
dtype: bool
df['Match']=s
添加回答
举报