使Pandas dataframe的索引和列成为相同的集合(它们的并集)
在我们的问题中,行(索引)和列属于同一类对象。我们想要扩展一个 Pandas DataFrame,添加一些行和列,这些行和列里填充的是 NaN(缺失值)或者预定义的值,这样行和列的集合就变成了原来行列集合的并集。
比如,把下面这个表:
A | C | |
---|---|---|
B | 0 | 1 |
C | 1 | 1 |
变成:
A | B | C | |
---|---|---|---|
A | NaN | NaN | NaN |
B | 0 | NaN | 1 |
C | 1 | NaN | 1 |
这是一个实际的例子——构建一个有向图的邻接矩阵,行和列的标签是顶点。在某个阶段,某些没有出入边的行和列需要被填充。
核心问题是如何高效地做到这一点。这个问题看起来很基础,感觉应该有一个标准的方法来实现。真的有吗?
简单的解决办法是遍历所有不在另一集合中的索引和列,然后分别把这些列和行添加到数据框中。
但是简单的 reindex 等方法的问题在于,我们同时在扩展数据框,而缺失值可能会出现在其他列之间。