Como ya sugirió HYRY en los comentarios, Series.map es el camino a seguir aquí. Simplemente establezca el índice en la serie resultante.
Ejemplo simple:
df = pd.DataFrame({'d': [1, 2, 3]}, index=['FOO', 'BAR', 'BAZ'])
df
d
FOO 1
BAR 2
BAZ 3
df.index = df.index.map(str.lower)
df
d
foo 1
bar 2
baz 3
Índice! = Serie
Como lo señaló @OP. la df.index.map(str.lower)llamada devuelve una matriz numpy. Esto se debe a que los índices de marcos de datos se basan en matrices numerosas, no en series.
La única forma de convertir el índice en una serie es crear una serie a partir de él.
pd.Series(df.index.map(str.lower))
Consideración
La Indexclase ahora subclasifica StringAccessorMixin, lo que significa que puede realizar la operación anterior de la siguiente manera
df.index.str.lower()
Esto todavía produce un objeto Index, no una Serie.
df.index.map(foo)el trabajo?