可以使用pandas库中的groupby方法和itertools库中的combinations函数来解决。
例如,我们有如下数据集:
import pandas as pd
data = {
'group': ['A', 'A', 'B', 'B', 'B'],
'item': ['X', 'Y', 'X', 'Y', 'Z']
}
df = pd.DataFrame(data)
| group | item |
|---|---|
| A | X |
| A | Y |
| B | X |
| B | Y |
| B | Z |
现在我们想要按group变量进行分组,并计算每个分组的item变量的组合数。我们可以这样做:
from itertools import combinations
grouped = df.groupby('group')['item'].apply(lambda x: list(combinations(x, 2)))
result = pd.DataFrame({'group': grouped.index, 'combinations': grouped.values})
最终我们得到的结果如下:
| group | combinations |
|---|---|
| A | [(X, Y)] |
| B | [(X, Y), (X, Z), (Y, Z)] |
其中combinations列是item变量的组合列表。
上一篇:按另一个变量分组计算变量的数量