在我们的问题中,行(索引)和列属于同一类别的对象。我们想要放大一个 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 等的问题是我们同时扩大了数据框,并且缺失的值也可能位于其他列之间。
我会得到索引
union
和reindex
:
idx = df.index.union(df.columns)
out = df.reindex(index=idx, columns=idx)