1
我正在使用主题建模方法对某些文本数据运行嵌套的群集分析。在这些方法中,在一定程度上允许“主题”(或主题)之间的重叠。因此,我有一些identifier
已被分组为多个主题,而其他人只被发送到一个主题。检查另一列中是否包含字符串?
如果你看看下面,你会发现为level_3_id
这几个值已被“放错地方,”可以这么说(即该行的level_2_id
的值表示不同的“等级2”的主题不是确实为level_3_id
值。我想放弃在这df['level_3_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
我试图做一些事情来这效果(我知道它不起作用,但我希望能够传达向量化这个字符串遏制检查过程的一般想法):
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)
编辑:
一个正确的答案,之后@ Noobie的帮助下:
df[df.apply(axis = 1, func = lambda x: x['level_2_id'] in x['level_3_id'])]
我得到这个错误,虽然:'类型错误: '系列' 的对象是可变的,因此,他们不能被散列' – blacksite
更新仍然不起作用:'TypeError:字符串指示符必须是整数'。不应该将“应用”函数应用于整个数据帧,而不是系列'df ['level_3_id']'?编辑:即使应用于整个df,也会引发相同的错误。 – blacksite