【发布时间】:2021-01-22 14:43:48
【问题描述】:
我有一个非常大(大约 2000x2000 但不一定是正方形)的数据框,看起来像这样非常稀疏:
col1 col2 col3 col4
row1 0 0 1 0
row2 1 1 0 0
row3 0 1 0 1
row4 0 0 0 1
你可以用这一行重新创建它:
df = pd.DataFrame([[0, 0, 1, 0], [1, 1, 0, 0], [0, 1, 0, 1], [0, 0, 0, 1]], columns=["col1", "col2", "col3", "col4"], index=["row1", "row2", "row3", "row4"])
所以在这种情况下,我们可以看到 row2 和 row3 有一个共同的 col2 元素,而 row4 和 row3 有一个共同的非零元素,所以它们都是一个组 (row2, row3, row4) 而 row1 没有共同的非零元素,因此将是它自己的组。
我想要的是有一种相当有效的方法来获取所有这些相互独立的行分组。
我想出的唯一策略是遍历所有行,找到其共同的行,然后继续遍历所有行,直到我将所有组合绑定在一起,但这似乎效率很低。
有没有人有更好的方法来生成这些不同的组?
【问题讨论】:
-
这个可以用图论来解决,你愿意用pandas以外的库吗?
-
@Ben.T 我认为为此获得熊猫解决方案是一项艰巨的任务。如果您有
networkx的解决方案,未来的读者将与 OP 一起受益 :)