python - 获取数据框中的值组合并实现函数
问题描述
我想取一列中的值组合并对每个组合应用一个函数。最简单的方法是什么?
示例数据
| name | value |
|------|-------|
| 6A | 1 |
| 6A | 1 |
| 6A | 1 |
| 6B | 3 |
| 6B | 3 |
| 6B | 3 |
| 6C | 7 |
| 6C | 5 |
| 6C | 4 |
我想要的结果我
在示例中使用 sum 作为函数:
| pair | result |
|-------|--------|
| 6A_6B | 4 |
| 6A_6B | 4 |
| 6A_6B | 4 |
| 6A_6C | 8 |
| 6A_6C | 6 |
| 6A_6C | 5 |
| 6B_6C | 10 |
| 6B_6C | 8 |
| 6B_6C | 7 |
注意
我的函数将“pandas.Series”作为参数。
例如:
x =一系列“6A”
和
y =一系列“6B”
6A_6B = sum(x,y)
解决方案
itertools.combinations
在我的头顶
from itertools import combinations
g = dict(tuple(df.groupby('name')))
pd.DataFrame([
(f'{x}_{y}', a + b)
for x, y in combinations(g, 2)
for a, b in zip(g[x]['value'], g[y]['value'])
], columns=df.columns)
name value
0 6A_6B 4
1 6A_6B 4
2 6A_6B 4
3 6A_6C 8
4 6A_6C 6
5 6A_6C 5
6 6B_6C 10
7 6B_6C 8
8 6B_6C 7
推荐阅读
- c++ - 我怎样才能做排列?
- java - 当创建一个在很多层级都会被频繁引用的java对象时,是使用类实例还是静态类更好呢?
- php - php将字符串转换为数组以进行组?
- jquery - ScrollMagic 和 GreenSock 迭代一组元素
- c++ - 在 C++ 中实现正则表达式
- ios - 无法在tableView中多行显示UILabel
- c# - 如何从 WPF C# 应用程序的主线程调用将 UI 元素加载到不同堆栈面板的函数
- r - 了解 R 中树(data.tree)的递归构建
- ios - Xcode 10 阿拉伯语(RTL)故事板未加载
- migration - 从不同来源和架构到 MS SQL 服务器的数据迁移