Pandas: pad series on top or bottom

Pandas: pad series on top or bottom

事实证明这对我来说很重要,所以我想看看其他人是否有一个简单的解决方案:

假设我有任意数量(例如 3)的 pd.Series:看起来像:

first = pd.Series(range(5))
second = pd.Series(range(7))
third = pd.Series(range(6))

我想让它们都具有相同的长度(7——这是最大的长度)并在顶部(可选地在底部)用 np.nans 填充较短的,所以首先看起来像:

nan
nan
  0
  1
  2
  3
  4

等等。

您可以使用 reindex 为每个系列指定一个新索引。如果新索引包含原始系列索引中不存在的标签,则填充 NaN 值(除非指定了不同的 fill_value):

In [15]: first.reindex(range(7))
Out[15]: 
0    0.0
1    1.0
2    2.0
3    3.0
4    4.0
5    NaN
6    NaN
dtype: float64

您可以通过选择重建索引标签来控制 NaN 的放置:

In [19]: first.reindex(range(-2,5))
Out[19]: 
-2    NaN
-1    NaN
 0    0.0
 1    1.0
 2    2.0
 3    3.0
 4    4.0
dtype: float64

请注意,包含 NaNs 会强制 first 的数据类型从整数数据类型提升为浮点数据类型,因为 NaNs 是浮点数(因此整数系列 dtype 不能包含 NaNs)。