我有一个看起来像这样的熊猫系列:
>>> x.sort_index()
2 1
5 2
6 3
8 4
我想填写这个系列,以便"失踪"表示索引行,用0填充数据值。
因此,当我列出新系列时,它看起来像这样:
>>> z.sort_index()
1 0
2 1
3 0
4 0
5 2
6 3
7 0
8 4
我试过创建一个"虚拟"系列
>>> 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
然后将它们连在一起 - 但结果是:
>>> 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
或者
>>> 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
这两个都不是我上面列出的目标结构。
我可以尝试在axis = 1版本上执行一些算术,并获取第1列和第2列的总和,但我正在寻找一个更整洁的单行版本 - 这样的索引填充/清理操作是否存在,如果是的话,它是什么?
答案 0 :(得分: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
答案 1 :(得分:0)