创建单词排列并将它们各自的分数相加(Pandas,Python 3)

创建单词排列并将它们各自的分数相加(Pandas,Python 3),python,python-3.x,pandas,itertools,Python,Python 3.x,Pandas,Itertools,我现在有一个df,看起来像这样: Word Score Other This 10 1 is 10 2 an 20 5 example 50 3 great 20 2 我接下来要做的是根据单词列中找到的单词创建排列,并将被排列的单词的总分相加。由于我的数据集相当丰富,我只想创建那些分数高于集合总数(在本例中为50)的排列,以限制可能排列的绝对总数 预期产出: **

我现在有一个df,看起来像这样:

Word     Score    Other
This      10       1
is        10       2    
an        20       5
example   50       3
great     20       2
我接下来要做的是根据单词列中找到的单词创建排列,并将被排列的单词的总分相加。由于我的数据集相当丰富,我只想创建那些分数高于集合总数(在本例中为50)的排列,以限制可能排列的绝对总数

预期产出:

**Permutations**         **Score**
an example                  70
example great               70
This example                60
etc...
问题如何添加置换单词的分数并将其堆叠

我的代码缺少这个

import itertools
word = exact['Word']
score = exact['Score']
perm = list(itertools.permutations(word, 3))


removal = perm[perm['Score'] >= 50]
有什么想法吗

根据Garret的帮助进行编辑:

exact = stuff[stuff['Other'] < 6 ]
def find_perms(df, min_score):
    perm = itertools.permutations(df.Word.unique(), 2)
    score = df.Score.to_dict()
    for p in perm:
        s = sum(score[w] for w in p)
        if s >= min_score:
           yield p, s

df = pd.DataFrame(list(find_perms(exact, 50000)),
              columns=['Permutations', 'Score'])
exact=stuff[stuff['Other']<6]
def find_perms(df、min_分数):
perm=itertools.permutations(df.Word.unique(),2)
分数=df.score.to_dict()
对于perm中的p:
s=总和(p中w的分数[w]
如果s>=最小分数:
产量p,s
df=pd.DataFrame(列表(find_perms(精确,50000)),
列=[‘排列’、‘分数’])

为了避免为不符合所需阈值的排列分配内存,在构建pandas对象之前,可以“动态”计算分数

def find_perms(df, min_score):
    perm = itertools.permutations(df.Word.unique(), 2)
    score = df.Score.to_dict()
    for p in perm:
        s = sum(score[w] for w in p)
        if s >= min_score:
            yield p, s

df = pd.DataFrame(list(find_perms(df, 50)),
                  columns=['Permutations', 'Score'])

您应该使示例数据框成为一个可复制和可复制的字典。使人们能够轻松地重新创建您的情况,并提供建议我编辑了代码--这就是您的想法吗?不,只是复制和粘贴您的原始数据框在问题的顶部。就像这个问题:@DataSwede,这就是pd.read_clipboard()的作用……:)@Garrett当我使用它时,它似乎在相当长的一段时间内错误地创建了数据帧……啊,我知道必须涉及一个屈服函数——我的问题是,我如何引用一个特定的列作为迭代的列?那么在这种情况下,我如何只从“word”列创建排列,而只添加score列呢?非常感谢。只是为了进一步解释——这似乎可行,但它正在排列文档的索引列,而我需要“单词”列啊,更新为传递
df.Word
列,而不是
df.index
itertools.permutations()
Hey Garrett,实际上,我试过了,但得到了一个错误--KeyError:“这是‘每次我运行代码的时候’这是标题“word”下列表中的第一个单词。我已经更新了上面的代码以提供更好的图片,但是这个问题是由单词列表当前是熊猫对象这一事实引起的吗?下面是部分回溯:第70行,在find_perms s s=sum(p中w的分数[w])---keyrerror:“这是