我有一個 Pandas 資料框,例如:
| 特征 A | 特征 B | 特征 C |
|---|---|---|
| A1 | B1 | C1 |
| A2 | B2 | C2 |
給定 k 作為輸入,我希望所有值組合按長度為 k 的特征分組,例如對于 k = 2 我想要:
[{A:A1, B:B1},
{A:A1, B:B2},
{A:A1, C:C1},
{A:A1, C:C2},
{A:A2, B:B1},
{A:A2, B:B2},
{A:A2, C:C1},
{A:A2, C:C2},
{B:B1, C:C1},
{B:B1, C:C2},
{B:B2, C:C1},
{B:B2, C:C2}]
我怎樣才能做到這一點?
uj5u.com熱心網友回復:
這可能效率不高,但適用于小規模。
首先,確定k列的唯一組合。
from itertools import combinations
k = 2
cols = list(combinations(df.columns, k))
然后用于MultiIndex.from_product獲取k列的笛卡爾積。
result = []
for c in cols:
result = pd.MultiIndex.from_product([df[x] for x in c]).values.tolist()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/459176.html
