Панды: ряд прокладок сверху или снизу
Это оказалось для меня нетривиальным, поэтому я хотел проверить, есть ли у других простое решение для этого:
Предположим, у меня есть произвольное число (скажем, 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
и так далее.
1 ответ
Вы могли бы использовать 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 заставляет dtype first
повышаться от целочисленного dtype до dtype с плавающей точкой, так как NaN
s являются числами с плавающей точкой (и, следовательно, серия целых чисел dtype не может содержать NaN
с).