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 Index
clase 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?