我有一个包含单词列表的python数据框。
Column Name
1. text1
2. text2
3. text3
我需要用空格分隔的单列中一次找到3个单词的数据帧中的所有排列。输出必须如下所示。
text1 text2 text3
text1 text3 text2
text2 text3 text1
text2 text1 text3
text3 text2 text1
text3 text1 text2
对此有任何帮助,不胜感激!!
答案 0 :(得分:4)
Itertools非常适合!具体来说,itertools.permutations
:
import itertools as it
df = pd.DataFrame({'col': ['text1', 'text2', 'text3']})
perms = it.permutations(df.col)
这为您提供了一个生成器perms
,它将在您每次调用next(perms)
时为您提供下一个排列,例如for perm in perms:
或[perm for perm in perms]
这样的事情会自动执行。
请注意,如果数据框中有三个以上的元素,但一次只想排列三个,则可以在上面使用it.permutations(df.col, 3)
。还要注意,如果数据框中有很多元素,则会得到大量的排列。这是二项式“排列数量等于n选择k”或N = n! / (k! * (n - k)!)
。
您可以通过以下方式获得所需的输出格式:
result = '\n'.join([' '.join([s for s in perm]) for perm in perms])
print(result)
text1 text2 text3
text1 text3 text2
text2 text1 text3
text2 text3 text1
text3 text1 text2
text3 text2 text1