【问题标题】:Remove duplicate words from each row in a column using lambda function使用 lambda 函数从列中的每一行中删除重复的单词
【发布时间】:2021-01-13 12:07:47
【问题描述】:

我正在尝试创建一个 lambda 函数,以便从一列的每一行中删除重复的单词。我试图将一个变量定义为我的列,并创建一个从句子中消除重复单词的函数,但我不知道如何使用 lambda 将该函数应用于整个列。

def unique_list(l):
    lst = []
    [lst.append(x) for x in l if x not in lst]
    return lst

a = 'shoes dress apple shoes mango apple'
a = ' '.join(unique_list(a.split()))  # 'shoes dress apple mango'

我的列是“dup_words”,您能帮我理解如何使用 lambda 将上述函数应用于列中的所有行吗?

【问题讨论】:

  • 行和列是指 Numpy 行和列吗?
  • 不一定,我希望能够从我的列“dup_words”的每一行中检查并消除重复的单词。一行可以是字符串'shoes dress apple shoes mango apple',我需要以某种方式在该列的每一行上循环并消除任何重复的单词

标签: python pandas lambda duplicates


【解决方案1】:

假设行和列是指这样的结构:

data = [
    ['shoes dress apple shoes mango apple','shoes dress apple shoes mango apple','shoes dress apple shoes mango apple'],  # Column 1
    ['shoes dress apple shoes mango apple','shoes dress apple shoes mango apple','shoes dress apple shoes mango apple'],  # Column 2
    ['shoes dress apple shoes mango apple','shoes dress apple shoes mango apple','shoes dress apple shoes mango apple']   # Column 3
]

您可以将列表推导式与包含您定义的函数的 lambda 函数一起使用:

dup_words = data[0]  # ['shoes dress apple shoes mango apple', 'shoes dress apple shoes mango apple', 'shoes dress apple shoes mango apple']

unique_words = [(lambda x: ' '.join(unique_list(x.split())))(row) for row in dup_words]  # ['shoes dress apple mango', 'shoes dress apple mango', 'shoes dress apple mango']

可以通过将函数更改为:

def unique_list(l):
    lst = []
    [lst.append(x) for x in l if x not in lst]
    return ' '.join(lst)

那么你的 lambda 函数就变成了

unique_words = [(lambda x: unique_list(x.split()))(row) for row in dup_words]  # ['shoes dress apple mango', 'shoes dress apple mango', 'shoes dress apple mango']

【讨论】:

    【解决方案2】:

    如果订购无关紧要,请使用set()。简明扼要。

    def unique_list(l):
        return list(set(l))
    
    
    a = 'shoes dress apple shoes mango apple'
    a = ' '.join(unique_list(a.split()))  # 'shoes dress apple mango'
    

    所有人都为简单的一个班轮欢呼:

    a = 'shoes dress apple shoes mango apple'
    a = ' '.join(list(set(a.split())))  # 'shoes dress apple mango'
    

    你的新专栏可以写成这样:

    df['deduped'] = df['some_column'].apply(lambda x: list(set(x)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      • 2016-01-19
      • 2019-11-13
      • 2020-01-03
      • 2018-07-27
      • 2021-02-03
      相关资源
      最近更新 更多