python - 在与 ID 关联的单个列中查找所有 2 个部分排列
问题描述
我正在尝试做以下事情:
group id value
1 a
1 b
1 c
2 b
2 c
2 d
进入这种性质的东西:
group id value1 value2
1 a b
1 a c
1 b a
1 b c
1 c a
1 c b
2 b c
2 b d
2 c b
2 c d
2 d b
2 d c
我在 R 中找到了解决方案,但在 Python 中找不到类似的解决方案。
解决方案
您可以分组group_id
并申请itertools.permutations
:
import pandas as pd
df = pd.DataFrame({ 'group_id': [1]*3 + [2]*3, 'value': list('abcbcd') })
from itertools import permutations
(df.groupby('group_id')
.apply(lambda x: pd.DataFrame(permutations(x.value, 2), columns=['value1', 'value2']))
.droplevel(1))
输出:
value1 value2
group_id
1 a b
1 a c
1 b a
1 b c
1 c a
1 c b
2 b c
2 b d
2 c b
2 c d
2 d b
2 d c
推荐阅读
- arrays - 创建自定义类的数组并对其进行初始化
- python - Python - 如何迭代列表中字符串的第一个字符
- mysql - MariaDB:以km为单位计算2点之间的距离
- c# - 如何在 s3 中创建和上传数据到 json 文件?
- c++ - 使用初始化列表时如何获取私有数据?
- python - 如何在python中使用shell命令将pdf转换为jpg?
- c# - 使用 Google Drive API 在 Google Doc 上获取评论:评论所有者的 EmalAddress 返回 null
- r - 循环遍历数据框以生成新列
- c++ - *++*++ppp,*++pp[1],*++(*(1+ppp)有什么具体区别吗?(C/C++指针问题)
- python - 我如何通过我的 Python 脚本为开发人员发送 whatsapp 消息