可以使用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变量的组合列表。
上一篇:按另一个变量分组计算变量的数量