python - 如何根据熊猫数据框中的其他列进行组合
问题描述
我有一个带有关键字列的数据框。关键字列也有 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是可能的,但我不确定如何实现这一点。
解决方案
尝试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
推荐阅读
- c - 在编译时在 C 中生成嵌套常量数组
- dependency-injection - Legacy code & Dependency Injection - 两者通信有什么妥协吗?
- mysql - MySQL 返回日期/时间现在减去 1 小时的记录?
- javascript - 对象克隆和 eval() 的 Javascript 问题
- javascript - 动态 Vue Router 变量,事先不知道变量
- javascript - 如何在javascript中增加日期以及如何禁用以前的日期?
- javascript - 将只读输入值发送到服务器(MEAN 堆栈)
- javascript - 如何使用 HTML 元素属性将数据从 Blade.php 文件传递到反应组件?
- python - 在字符串python中的“(数据)”中删除
- apache-spark - Pyspark 将所有嵌入式结构展平到同一级别