我正在使用主题建模方法对一些文本数据运行嵌套聚类分析。在这些方法中,"主题之间的重叠" (或主题)在某种程度上是允许的。因此,我有一些identifier
已被分组为多个主题,而其他level_3_id
只被发送到一个主题。
如果你看下面的话,你会注意到level_2_id
的几个值已被错放,"可以这么说(即该行level_3_id
的值表示与df['level_3_id']
的值不同的" 2级"主题。我试图删除所有行其中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
中的字符串,但遇到一些困难。请参阅下面的代码。
import pandas as pd
pairs = list(zip(df['level_2_id'], df['level_3_id']))
new_data = [y for x, y in pairs if x in y]
我试图为这种效果做点什么(我知道它不起作用,但我希望传达这种字符串包含检查过程的一般概念):
pandas
这基本上可以提供我想要的内容,但有没有办法在df
中执行此操作,这样可以避免将较短的列表分配给较长的df['level_3_id'].str.contains(df['level_2_id'].str)
?
这样的事,也许?
df[df.apply(axis = 1, func = lambda x: x['level_2_id'] in x['level_3_id'])]
编辑:
正确的答案,在@ Noobie的帮助之后:
{{1}}
答案 0 :(得分:1)
df['level_3_id'].apply(lambda x: x['level_3_id'] in x['level_2_id'].tolist())