我想从df2
中删除所有不在df1
中的单词。
我的df1
看起来像这样:
id text
1 Hello world how are you people
2 Hello people I am fine people
3 Good Morning people
4 Good Evening
我的df2
如下:
id text
1 Hello world how are you all
2 Hello everyone I am fine everyone
3 Good Afternoon people
4 Good Night
df2
的预期输出:
id text
1 Hello world how are you
2 Hello I am fine
3 Good people
4 Good
编辑:如果我还可以打印删除的单词及其计数(删除的单词总数),那会很好
答案 0 :(得分:1)
一种方法是使用sets
,并使用两个给定列表中的intersection
,其对应索引包含split
个字符串。然后,我们可以使用sorted
根据df1.text
和join
对列表中的项目进行排序:
res = [' '.join(sorted(set(s1.split()) & set(s2.split()), key=s1.split().index))
for s1, s2 in zip(df1.text, df2.text)]
out = pd.DataFrame(res, columns=['Text'])
print(out)
Text
0 Hello world how are you
1 Hello I am fine
2 Good people
3 Good
有关更具可读性的解决方案:
res = []
for s1, s2 in zip(df1.text, df2.text):
set_s2 = s2.split()
set_int = set(set_s2) & set(s1.split())
s_int = sorted(set_int, key=set_s2.index)
res.append(' '.join(s_int))
out = pd.DataFrame(res, columns=['Text'])