我有两个数据帧:df1和df2。
df1
看起来像这样:
id text
1 I love this car
2 I hate this car
3 Cars are life
4 Bikers are also good
df2
看起来像这样:
id text
1 I love this supercar
2 I hate cars
3 Cars are love
4 Bikers are nice
现在,我只想保留df1
和df2
中的那些单词。
car
一词在df1
中,但不在df2
中,因此我想将其删除。
life
一词在df1
中,但不在df2
中,因此我想将其删除。
also
一词在df1
中,但不在df2
中,因此我想将其删除。
good
一词在df1
中,但不在df2
中,因此我想将其删除。
supercar
一词在df2
中,但不在df1
中,因此我想将其删除。
nice
一词在df2
中,但不在df1
中,因此我想将其删除。
df1的预期输出:
id text
1 I love this
2 I hate this
3 Cars are
4 Bikers are
df2
的预期输出
id text
1 I love this
2 I hate cars
3 Cars are love
4 Bikers are
答案 0 :(得分:2)
在两列中创建单词交集,然后删除不匹配的值:
a = set([y for x in df1['text'] for y in x.split()])
b = set([y for x in df2['text'] for y in x.split()])
c = a & b
print (c)
{'hate', 'are', 'Bikers', 'this', 'love', 'I', 'Cars'}
df1['text'] = df1['text'].apply(lambda x: ' '.join(y for y in x.split() if y in c))
df2['text'] = df2['text'].apply(lambda x: ' '.join(y for y in x.split() if y in c))
print (df1)
id text
0 1 I love this
1 2 I hate this
2 3 Cars are
3 4 Bikers are
print (df2)
id text
0 1 I love this
1 2 I hate
2 3 Cars are love
3 4 Bikers are