Как поменять значения индекса в Series?
У меня есть массив случайных величин:
s = pd.Series(data=np.random.normal(size=100))
Нужно создать массив их этих же данных, но с другой индексацией: возвести старую в квадрат.
Пыталась сделать так:
s1 = pd.Series(data=s,index=np.arange(0,99)**2)
Но массив теряет половину данных, так как сопоставляет данные нового массива со старой индексацией и проставляет NaN вместо данных.
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Проблема в том, что вы указываете индекс с меньшим числом элементов:
In [25]: len(np.arange(0,99))
Out[25]: 99
In [26]: len(s)
Out[26]: 100
попробуйте так:
s1 = pd.Series(data=s,index=np.arange(len(s))**2)
NOTE: это решение будет правильно работать только в том случае если в исходном ряду значения индекса: [0, 1, 2, ...]
но лучше сделать так:
s.index **= 2
или так:
s.index *= s.index
Результат:
In [18]: s
Out[18]:
0 -1.139308
1 0.150535
4 -0.644703
9 -0.021449
16 -1.995995
...
9025 0.539693
9216 2.191779
9409 -0.901023
9604 -0.131828
9801 1.730033
Length: 100, dtype: float64