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

标签 python python-3.x pandas

我正在将几个 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/

相关文章:

带有 argparse 参数表单列表的 Python 命令行参数不起作用

python - 将 django 应用程序迁移到多个服务器

python - 如何使用代码在Python中删除Mayavi工具栏

python-3.x - 我的 scipy.misc 模块似乎缺少 imsave

python - 如何索引 Pandas 数据框中的时间段?

python - 使用 Pyinstaller 创建可执行 Pygame 后出错

python - 弧形中的不同颜色

python - while 循环中 try/except 的较短版本?

python - 如何在 pandas 中追加与循环对齐的列

python - pandas.merge 在使用 tzinfo 合并时间戳列时失败