如何使多索引上的所有子索引具有相同的值

时间:2018-09-25 21:21:19

标签: python pandas indexing

我有一个具有多重索引的数据框,如下所示:

a 1
  2
  3
b 2
  3

因此,外层的值是a,b,a的内部值是1、2、3,b的内部值是2、3

我想确保内部级别上的索引对于外部级别上的所有索引都是相同的(在这种情况下,请为内部索引为1的b创建一个新行)。对于这些新行,列上的值将全部为Null。

有简单的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用由原始数据帧索引制成的MultiIndex重新索引:

df.reindex(pd.MultiIndex.from_product(df.index.levels))

示例:

idx = pd.MultiIndex.from_arrays([['a','a','a','b','b'],[1,2,3,2,3]])

df = pd.DataFrame(np.random.random(5), index=idx)

>>> df
            0
a 1  0.354691
  2  0.322138
  3  0.195380
b 2  0.731177
  3  0.912628

>>> df.reindex(pd.MultiIndex.from_product(df.index.levels))
            0
a 1  0.354691
  2  0.322138
  3  0.195380
b 1       NaN
  2  0.731177
  3  0.912628