gpt4 book ai didi

python - 从 DF 中删除包含重复单词的短语(Pandas、Python3)

转载 作者:太空宇宙 更新时间:2023-11-03 18:10:31 25 4
gpt4 key购买 nike

我正在将几个 DF 合并在一起,这些 DF 根据前缀匹配在一起。这在 90% 的情况下可以创建语义正确的字符串,但有时,以这种方式合并可以创建“循环”在一起的短语。这是我的 DF 的示例,它将更好地解释我的意思:

Words            Words1              Words2
Big Hitter Up and Down A Cold Lonely Night
Snail Mail Wood Grain Rail Cup of Lemon Tea
.... ..... .....
French Fries Bat Boy Bat Small Ball Small Ball
Phone Book Fee No Fee Hands up Hands up

第 2 列和第 3 列中的底部两个示例就是我所说的“循环在一起”时的意思,即字符串包含同一单词的重复项。

我知道如何使用这些短语来删除重复内容

re.sub(r'\b(.+)(\s+\1\b)+', r'\1', s)

但我需要它们完全消失。 有谁知道我将如何从 DF 中的每列中删除这些包含重复单词的字符串?

所以我希望有一个像 DF 这样的

Words            Words1              Words2
Big Hitter Up and Down A Cold Lonely Night
Snail Mail Wood Grain Rail Cup of Lemon Tea
.... ..... .....
French Fries
Phone Book

最佳答案

有趣的问题。怎么样:

分解为步骤以更好地展示想法:

In [39]:

print df
Words Words1 Words2
0 Big Hitter Up and Down A Cold Lonely Night
1 Snail Mail Wood Grain Rail Cup of Lemon Tea
2 French Fries Bat Boy Bat Small Ball Small Ball
3 Phone Book Fee No Fee Hands up Hands up
In [40]:

print df.applymap(lambda x: len(' '.join(set(x.split())))==len(x))
Words Words1 Words2
0 True True True
1 True True True
2 True False False
3 True False False
In [41]:

print df.where(df.applymap(lambda x: len(' '.join(set(x.split())))==len(x)),
'')
Words Words1 Words2
0 Big Hitter Up and Down A Cold Lonely Night
1 Snail Mail Wood Grain Rail Cup of Lemon Tea
2 French Fries
3 Phone Book

我们正在使用lambda函数将数据帧中的每个单词分解为 list ,然后将其转换为 set ,这将消除同一单词的多个实例。然后我们问这个词是否变得更短了。如果是的话,一定有一些重复的词。这就是 lambda函数正在做。我们创建一个boolean此步骤中的数据框。

df.where部分很简单。它查看 boolean我们刚刚创建的数据框,如果单元格是 true ,生成的数据框将从 df 中获取相应的值,否则单元格将获取第二个参数指定的值。这里我们使用'' ,这将使单元格无论在哪里都是空的 falseboolean数据框。

关于python - 从 DF 中删除包含重复单词的短语(Pandas、Python3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26065668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com