使用 lambda 删除一系列 Python 中低于特定时间的单词出现次数



我在数据帧df中有这个庞大的 41,000 行系列:

column1                                   column2     column2
content in not below like this amsterdam  nan         sport
massive create non-programming question   nan         religion 

我想删除第1 列中低于 5 次或等于的所有单词出现次数,因此df数据帧如下所示:

column1                                   column2     column2
content amsterdam                         nan         sport
massive create non-programming question   nan         religion

有人可以帮我吗?

我最初的尝试是这样的:

df['column1'] = df['column1'].apply(filter(lambda x : (x, df['column1'].count < 4)), set(df['column1']))

但我收到错误消息说:

TypeError: filter expected 2 arguments, got 1

最好为此使用函数,因为单个 lambda 太复杂且不是很干净。

正则表达式将元素转换为单词列表。然后,筛选器会保留大于 5 的单词。

import re
def remove_five_or_less(line):
word_list = re.sub("[^w]", " ",  line["column1"]).split()
filtered_list = filter(lambda x: len(x) > 5, word_list)
return " ".join(filtered_list)
df["column1"] = df.apply(lambda x: remove_five_or_less(x), axis=1)

最新更新