Умножение индексов, без создания новых c выводом по условию

Как решить задание, не сходиться с ответом (ответ не знаю). Мне кажется проблема в том, что не правильно отработал с индексами, наплодил много новых, а не изменил лишь имеющиеся сто.

Вот задание:

Возведите каждое значение серии в 3 степень, а значения индекса увеличьте в 3 раза. Ответьте на следующие вопросы через запятую (без пробелов)

  1. Выведите сумму элементов, строго меньших 2.6, имеющих нечётные значения индекса.

  2. Выведите количество значений серии меньше нуля.

Так пробую решить:

np.random.seed(242)
    d = pd.Series(data = np.random.normal(size=100))
    n_i = np.arange(0,100)
    n_i = n_i*3
    d = d**3
    d1 = pd.Series(data = d, index = n_i)
    logical_results = (d1 < 2.6) & (d1.index % 2 != 0)
    print(np.sum(d1[logical_results]))
    logical_results = (d1 < 0)
    len(d1[logical_results])
    #ответ -0.23,17

Попробовал метод @MaxU ,но не сходиться с его ответом. В чем дело?

np.random.seed(242)
### Type your code here
d = pd.Series(data = np.random.normal(size=100))
d = d**3
d.index *= 3
print(d.loc[(d.index % 2 ) & (d < 2.6)].sum())
(d < 0).sum()

Ответы (1 шт):

Автор решения: MaxU

попробуйте так:

# Возведите каждое значение серии в 3 степень
d = d**3
# значения индекса увеличьте в 3 раза
d.index *= 3

ответ 1:

In [19]: d.loc[(d.index % 2 != 0) & (d < 2.6)].sum()
Out[19]: -15.150748101821666

ответ 2:

In [143]: (d < 0).sum()
Out[143]: 51

пояснения:

(d < 0) - вернет серию значений типа bool. В Pandas, как и в Python, True - представлена значением 1, False - значением 0. Соответственно если просуммировать список / ndarray / pd.Series элементов с типом данных bool то получим число элементов со значением True.

Пример:

In [157]: np.array([False, False, False, True, True]).sum()
Out[157]: 2
→ Ссылка