首页 > 解决方案 > 如何根据熊猫数据框中的其他列进行组合

问题描述

我有一个带有关键字列的数据框。关键字列也有 2-7 个关键字,用逗号分隔。例如:

URL                                    Keywords
www.example.com                   "Keyword 1 , Keyword 2 , Keyword 3"
www.example2.com                  "Keyword 2, Keyword 4, Keyword 5"
.
.
.

我想要生成组合但只有两个的输出。我实际上需要“TO”和“FROM”的值来进行可视化。我希望以这种方式输出

URL                      Keyword Combination
www.example.com          Keyword 1, Keyword 2
www.example.com          Keyword 1, Keyword 3
www.example.com          Keyword 2, Keyword 1
www.example.com          Keyword 2, Keyword 3
.
.
.
.

我认为使用ITERTOOLS是可能的,但我不确定如何实现这一点。

标签: pythonpandasitertools

解决方案


尝试itertools.permutation, itertools.chain, 和df.explode(对于 pandas >= 0.25.0):

>>> lst = [[','.join(p) for p in permutations(val.split(','),2)] for val in df['Keywords']]
>>> df['Keywords'] = lst
>>> df.explode('Keywords')

  URL                                                    Keywords
0      www.example.com                     Keyword 1 , Keyword 2 
0      www.example.com                      Keyword 1 , Keyword 3
0      www.example.com                      Keyword 2 ,Keyword 1 
0      www.example.com                      Keyword 2 , Keyword 3
0      www.example.com                       Keyword 3,Keyword 1 
0      www.example.com                      Keyword 3, Keyword 2 
1      www.example2.com                      Keyword 2, Keyword 4
1      www.example2.com                      Keyword 2, Keyword 5
1      www.example2.com                       Keyword 4,Keyword 2
1      www.example2.com                      Keyword 4, Keyword 5
1      www.example2.com                       Keyword 5,Keyword 2
1      www.example2.com                      Keyword 5, Keyword 4

推荐阅读