Wie bereits von HYRY in den Kommentaren vorgeschlagen, ist Series.map der richtige Weg. Stellen Sie einfach den Index auf die resultierende Reihe ein.
Einfaches Beispiel:
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
Index! = Serie
Wie von @OP hervorgehoben. Der df.index.map(str.lower)Aufruf gibt ein numpy-Array zurück. Dies liegt daran , Dataframe - Indizes werden auf numpy Arrays basieren, nicht - Serie.
Die einzige Möglichkeit, den Index in eine Serie umzuwandeln, besteht darin, daraus eine Serie zu erstellen.
pd.Series(df.index.map(str.lower))
Vorbehalt
Die IndexKlasse unterteilt jetzt die StringAccessorMixin, was bedeutet, dass Sie die obige Operation wie folgt ausführen können
df.index.str.lower()
Dies erzeugt immer noch ein Indexobjekt, keine Serie.
df.index.map(foo)?