首页 > 解决方案 > 获取数据框中的值组合并实现函数

问题描述

我想取一列中的值组合并对每个组合应用一个函数。最简单的方法是什么?

示例数据

| 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)

标签: pythonpandasdataframedata-analysis

解决方案


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

推荐阅读