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 Index
Klasse 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)
?