Python 如何从一个数据帧中删除不在另一个数据帧中的字
我想删除Python 如何从一个数据帧中删除不在另一个数据帧中的字,python,pandas,dataframe,Python,Pandas,Dataframe,我想删除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
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
编辑:如果我还可以打印我删除的单词,以及它们的计数(我删除的单词总数)一种方法是使用
集合
,并从两个给定的列表中选择具有相应索引的字符串。然后,我们可以使用排序
根据df1对结果进行排序。text
和列表中的项目重新组合在一起:
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'])
要获得更具可读性的解决方案,请执行以下操作:
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'])
拆分测试并获得交叉点?欢迎使用SO。请花点时间阅读该页面上的其他链接。嘿,我确实打印了(pd.DataFrame(res,columns=['Text'])它是空的。它只是显示了0-1000之间的索引(我有1000行),我不确定会有什么错误。。。它对我有用。。。尝试一下常规循环,看看你是否明白为什么它不工作?我的错,我的代码中犯了一些错误。谢谢,从df1和df2的行中删除了很多?嘿。对不起,以前没有注意到。但是,
out
的输出不是预期的。让我再解释一遍
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'])