Python 如何添加熊猫;匹配“;基于列列表值和附加列中的值?

Python 如何添加熊猫;匹配“;基于列列表值和附加列中的值?,python,pandas,list,conditional-statements,matching,Python,Pandas,List,Conditional Statements,Matching,我有一个dataframe,其中包含一个列,该列包含一个名为Multiple_ID的标识符列表和一个名为ID的列。现在,我想创建一个名为“Match”的附加列,告诉您Multiple_ID列中是否包含ID。输出应该是一个名为Match的附加列,该列包含真值或假值。以下是一些示例输入数据: data = {'ID':[2128441, 2128447, 2128500], 'Multiple_IDs':["2128442, 2128443, 2128444, 2128441", "2128446,

我有一个dataframe,其中包含一个列,该列包含一个名为Multiple_ID的标识符列表和一个名为ID的列。现在,我想创建一个名为“Match”的附加列,告诉您Multiple_ID列中是否包含ID。输出应该是一个名为Match的附加列,该列包含真值或假值。以下是一些示例输入数据:

data = {'ID':[2128441, 2128447, 2128500], 'Multiple_IDs':["2128442, 2128443, 2128444, 2128441", "2128446, 2128447", "2128503, 2128508"]}
df = pd.DataFrame(data) 
该列表具有数据类型“object”

根据上面提供的输入数据,期望输出将是这样的


我知道我可以使用explode实现这一点,然后比较这些值,但我想知道是否有更优雅的方法?

如果可能,请在不单独测试每个
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'] = [str(x) in y.split(', ') for x, y in df[['ID','Multiple_IDs']].to_numpy()]


如果可能,在不单独测试每个
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'] = [str(x) in y.split(', ') for x, y in df[['ID','Multiple_IDs']].to_numpy()]

我会怎么做

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
我会怎么做

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