2 回答

TA贡献1794条经验 获得超7个赞
原来该解决方案是使用numpy代替步骤3)。虽然我们无法创建每一行的外部联接,但是我们可以按A列中的值进行分组,并为外部联接创建较小的组。
诀窍在于使用numpy.equal.outer(df1, df2).ravel()当将数据帧以这种方式作为输入传递给numpy函数时,结果将是更快(至少30倍)的向量化结果。例如:
>>> 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
您可以为每列重复,也可以只对结果逐列应用即可自动执行该过程。
添加回答
举报