Python 检查一列中的字符串是否包含在另一列中?

Python 检查一列中的字符串是否包含在另一列中?,python,pandas,Python,Pandas,我正在使用主题建模方法对一些文本数据进行嵌套聚类分析。在这些方法中,在一定程度上允许“主题”(或主题)之间的重叠。因此,我有一些identifiers,它们被分为多个主题,而其他的则只发送到一个主题 如果你看下面,你会注意到level\u 3\u id的几个值被“错位”,可以这么说(即该行level\u 2\u id的值表示与level\u 3\u id的值不同的“level 2”主题。我正在尝试删除df['level\u 3\u id']中字符串所在的所有行)不包含df['level_2_id

我正在使用主题建模方法对一些文本数据进行嵌套聚类分析。在这些方法中,在一定程度上允许“主题”(或主题)之间的重叠。因此,我有一些
identifier
s,它们被分为多个主题,而其他的则只发送到一个主题

如果你看下面,你会注意到
level\u 3\u id
的几个值被“错位”,可以这么说(即该行
level\u 2\u id
的值表示与
level\u 3\u id
的值不同的“level 2”主题。我正在尝试删除
df['level\u 3\u id']中字符串所在的所有行)
不包含
df['level_2_id']
中的字符串,但我遇到了一些困难。请参阅下面的代码

In [25]: df
Out[25]: 
       identifier level_1_id level_2_id level_3_id
15293  1270599    level_1   level_12  level_111
15294  1270599    level_1   level_12  level_122
15295  1270599    level_1   level_11  level_111
15296  1270599    level_1   level_11  level_122
15704  1269594    level_1   level_11  level_143
15705  1269594    level_1   level_11  level_111
15706  1269594    level_1   level_14  level_143
15707  1269594    level_1   level_14  level_111
29843  1271580    level_1   level_10  level_100
我正试图做一些事情来达到这个效果(我知道它不起作用,但我希望能够传达将这个字符串包含检查过程矢量化的一般思想):

这基本上给了我想要的,但是在
pandas
中有没有一种方法可以避免将较短的列表分配给较长的
df

也许是这样的

df['level_3_id'].str.contains(df['level_2_id'].str)
编辑:

在下面@Noobie的帮助下,回答正确:

df[df.apply(axis = 1, func = lambda x: x['level_2_id'] in x['level_3_id'])]

我得到了这个错误,虽然:
TypeError:“Series”对象是可变的,因此它们不能散列
更新仍然不起作用:
TypeError:string指示符必须是整数
apply
函数不应该应用于整个数据帧,而不是Series
df['level\u 3\u id']
?编辑:即使应用于整个df,也会引发相同的错误。
df[df.apply(axis = 1, func = lambda x: x['level_2_id'] in x['level_3_id'])]
df['level_3_id'].apply(lambda x: x['level_3_id'] in x['level_2_id'].tolist())