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.nan
s 填充较短的,所以首先看起来像:
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
请注意,包含 NaN
s 会强制 first
的数据类型从整数数据类型提升为浮点数据类型,因为 NaN
s 是浮点数(因此整数系列 dtype 不能包含 NaN
s)。
事实证明这对我来说很重要,所以我想看看其他人是否有一个简单的解决方案:
假设我有任意数量(例如 3)的 pd.Series
:看起来像:
first = pd.Series(range(5))
second = pd.Series(range(7))
third = pd.Series(range(6))
我想让它们都具有相同的长度(7——这是最大的长度)并在顶部(可选地在底部)用 np.nan
s 填充较短的,所以首先看起来像:
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
请注意,包含 NaN
s 会强制 first
的数据类型从整数数据类型提升为浮点数据类型,因为 NaN
s 是浮点数(因此整数系列 dtype 不能包含 NaN
s)。