2 回答

TA貢獻(xiàn)1794條經(jīng)驗 獲得超7個贊
原來該解決方案是使用numpy代替步驟3)。雖然我們無法創(chuàng)建每一行的外部聯(lián)接,但是我們可以按A列中的值進(jìn)行分組,并為外部聯(lián)接創(chuàng)建較小的組。
訣竅在于使用numpy.equal.outer(df1, df2).ravel()當(dāng)將數(shù)據(jù)幀以這種方式作為輸入傳遞給numpy函數(shù)時,結(jié)果將是更快(至少30倍)的向量化結(jié)果。例如:
>>> df = pd.DataFrame
A B C D
0 cat blue old Saturday
1 dog red old Saturday
>>> result = pd.DataFrame(columns=["A", "B", "C", "D"],
index=pd.MultiIndex.from_product([df.index, df.index]))
>>> result["A"] = np.equal.outer(df["A"], df["A"]).ravel()
>>> result
A B C D
0, 0 True NaN NaN NaN
0, 1 False NaN NaN NaN
1, 0 False NaN NaN NaN
1, 1 True NaN NaN NaN
您可以為每列重復(fù),也可以只對結(jié)果逐列應(yīng)用即可自動執(zhí)行該過程。
添加回答
舉報