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
函数不应该应用于整个数据帧,而不是Seriesdf['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())