Pandas:扩展系列的索引,使其包含范围内的所有值

Tho*_*ber 6 python pandas

我有一个看起来像这样的熊猫系列:

>>> x.sort_index()
2       1
5       2
6       3
8       4
Run Code Online (Sandbox Code Playgroud)

我想填写这个系列,以便表示"缺失"索引行,用0填充数据值.

因此,当我列出新系列时,它看起来像这样:

>>> z.sort_index()
1       0
2       1
3       0
4       0
5       2
6       3
7       0
8       4
Run Code Online (Sandbox Code Playgroud)

我试过创建一个"虚拟"系列

>>> y = pd.Series([0 for i in range(0,8)])
0    0
1    0
2    0
3    0
4    0
5    0
6    0
7    0
Run Code Online (Sandbox Code Playgroud)

然后将它们连在一起 - 但结果是:

>>> pd.concat([x,z],axis=0)
2    1
5    2
6    3
8    4
0    0
1    0
2    0
3    0
4    0
5    0
6    0
7    0
Run Code Online (Sandbox Code Playgroud)

要么

>>> pd.concat([x,z],axis=1)
    0   1
0 NaN   0
1 NaN   0
2   1   0
3 NaN   0
4 NaN   0
5   2   0
6   3   0
7 NaN   0
8   4 NaN
Run Code Online (Sandbox Code Playgroud)

这些都不是我上面列出的目标结构.

我可以尝试在axis = 1版本上执行一些算术,并获取第1列和第2列的总和,但我正在寻找一个更整洁的单行版本 - 这样的索引填充/清理操作是否存在,如果是这样的话, 它是什么?

jor*_*ris 10

你想要的是一个reindex.首先根据需要创建索引(在这种情况下只是一个范围),然后使用它重新索引:

In [64]: x = pd.Series([1,2,3,4], index=[2,5,6,8])

In [65]: x
Out[65]:
2    1
5    2
6    3
8    4
dtype: int64

In [66]: x.reindex(range(9), fill_value=0)
Out[66]:
0    0
1    0
2    1
3    0
4    0
5    2
6    3
7    0
8    4
dtype: int64
Run Code Online (Sandbox Code Playgroud)