查找单词的子集-python itertools

查找单词的子集-python itertools,python,pandas,itertools,Python,Pandas,Itertools,使用Python,我试图创建一个词干列表,其中有4到5个字符长,可以在类似拼字游戏的游戏中使用。从我收集的资料来看,我应该使用itertools,但我一直在研究如何将它与Pandas结合起来(我有一个包含所有单词的csv文件) 我尝试使用Pandas和Itertools,使用我在以前的线程中发现的内容,并得出以下返回错误的结果: from itertools import chain, combinations import pandas as pd def powerset(iterable

使用Python,我试图创建一个词干列表,其中有4到5个字符长,可以在类似拼字游戏的游戏中使用。从我收集的资料来看,我应该使用itertools,但我一直在研究如何将它与Pandas结合起来(我有一个包含所有单词的csv文件)

我尝试使用Pandas和Itertools,使用我在以前的线程中发现的内容,并得出以下返回错误的结果:

from itertools import chain, combinations
import pandas as pd

def powerset(iterable):
    "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
    s = list(iterable)
    return chain.from_iterable(combinations(s, r) for r in range(4))

data = {'A':['hammers','hampering','hamburger']}
df = pd.DataFrame(data)

df['subset 4ch'] = df.apply(lambda row : powerset(row['A']), axis=1)
“锤子”的子集列中的所需输出:
hamm、amme、MMR等+hmrs、aers等

我如何做到这一点

最终的结果是对每个可能的词干及其出现的单词进行排序。我可以看到我的功能是创建元组,这是我心目中最理想的最终产品吗

提前谢谢你

试着这样做:

def powerset(iterable):
    "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
    s = list(iterable)
    return [''.join(i) for i in chain.from_iterable(combinations(s, r) for r in range(4, 5))] 

df['subset 4ch'] = df.apply(lambda row : powerset(row['A']), axis=1)
输出:

    A           subset 4ch
0   hammers     [hamm, hame, hamr, hams, hame, hamr, hams, hae...
1   hampering   [hamp, hame, hamr, hami, hamn, hamg, hape, hap...
2   hamburger   [hamb, hamu, hamr, hamg, hame, hamr, habu, hab...
如果您不想在列表中显示输出单词:

return ", ".join([''.join(i) for i in chain.from_iterable(combinations(s, r) for r in range(4, 5))])

    A           subset 4ch
0   hammers     hamm, hame, hamr, hams, hame, hamr, hams, haer...
1   hampering   hamp, hame, hamr, hami, hamn, hamg, hape, hapr...
2   hamburger   hamb, hamu, hamr, hamg, hame, hamr, habu, habr...
试着这样做:

def powerset(iterable):
    "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
    s = list(iterable)
    return [''.join(i) for i in chain.from_iterable(combinations(s, r) for r in range(4, 5))] 

df['subset 4ch'] = df.apply(lambda row : powerset(row['A']), axis=1)
输出:

    A           subset 4ch
0   hammers     [hamm, hame, hamr, hams, hame, hamr, hams, hae...
1   hampering   [hamp, hame, hamr, hami, hamn, hamg, hape, hap...
2   hamburger   [hamb, hamu, hamr, hamg, hame, hamr, habu, hab...
如果您不想在列表中显示输出单词:

return ", ".join([''.join(i) for i in chain.from_iterable(combinations(s, r) for r in range(4, 5))])

    A           subset 4ch
0   hammers     hamm, hame, hamr, hams, hame, hamr, hams, haer...
1   hampering   hamp, hame, hamr, hami, hamn, hamg, hape, hapr...
2   hamburger   hamb, hamu, hamr, hamg, hame, hamr, habu, habr...

你遇到了什么错误?我试过你的代码,它没有引起任何错误当我去查看df时,“子集4ch”返回以下内容:这不是一个错误,它只是说它正在返回一个迭代器,如果你想查看迭代器中的内容,只需将其作为列表返回:返回列表(链…,你的代码工作得很好;)哦,酷-谢谢你的澄清!你遇到了什么错误?我试过你的代码,它没有引起任何错误当我去查看df时,“子集4ch”返回以下内容:这不是一个错误,它只是说它正在返回一个迭代器,如果你想查看迭代器中的内容,只需将其作为列表返回:返回列表(链…,你的代码工作得很好;)哦,酷-谢谢你的澄清!