使用lambda函数从列中的每一行中删除重复的字

2024-09-28 20:51:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个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将上述函数应用于我的列中的所有行


Tags: lambda函数inapple定义def单词list
2条回答

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

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']

如果排序不重要,请使用^{}。短小精悍

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)))

相关问题 更多 >