Chcę, aby wszystkie nagłówki kolumn w moich ramkach danych pandy były małymi literami
Przykład
Jeśli mam:
data =
country country isocode year XRAT tcgdp
0 Canada CAN 2001 1.54876 924909.44207
1 Canada CAN 2002 1.56932 957299.91586
2 Canada CAN 2003 1.40105 1016902.00180
....
Chciałbym zmienić XRAT na xrat, wykonując coś takiego:
data.headers.lowercase()
Tak więc otrzymuję:
country country isocode year xrat tcgdp
0 Canada CAN 2001 1.54876 924909.44207
1 Canada CAN 2002 1.56932 957299.91586
2 Canada CAN 2003 1.40105 1016902.00180
3 Canada CAN 2004 1.30102 1096000.35500
....
Nie będę z wyprzedzeniem znać nazw poszczególnych nagłówków kolumn.
df.columns = df.columns.str.lower()
Odpowiedzi:
Możesz to zrobić w ten sposób:
lub
data.columns = [x.lower() for x in data.columns]
przykład:
>>> data = pd.DataFrame({'A':range(3), 'B':range(3,0,-1), 'C':list('abc')}) >>> data A B C 0 0 3 a 1 1 2 b 2 2 1 c >>> data.columns = map(str.lower, data.columns) >>> data a b c 0 0 3 a 1 1 2 b 2 2 1 c
źródło
[x.lower() for x in data.columns]
jest odpowiednikiem:[x.lower() for x in data]
[x.lower().strip() for x in df0]
MultiIndex
df.index.names = [x.lower().strip() for x in df.index.names]
Można to zrobić łatwo
str.lower
zacolumns
:Przykład:
In [63]: df Out[63]: country country isocode year XRAT tcgdp 0 Canada CAN 2001 1.54876 9.249094e+05 1 Canada CAN 2002 1.56932 9.572999e+05 2 Canada CAN 2003 1.40105 1.016902e+06 In [64]: df.columns = df.columns.str.lower() In [65]: df Out[65]: country country isocode year xrat tcgdp 0 Canada CAN 2001 1.54876 9.249094e+05 1 Canada CAN 2002 1.56932 9.572999e+05 2 Canada CAN 2003 1.40105 1.016902e+06
źródło
Jeśli chcesz zmienić nazwę przy użyciu połączonego wywołania metody, możesz użyć
(Python 2)
lub
(Python 3)
źródło
jest najłatwiejszy, ale wyświetli błąd, jeśli niektóre nagłówki są numeryczne
jeśli masz nagłówki numeryczne, użyj tego:
df.columns = [str(x).lower() for x in df.columns]
źródło
df.columns.astype(str).str.lower()
w takim przypadku łatwiej jest pisać , ale może trochę rozwlekle.Oto prosty sposób:
data.columns = data.columns.str.lower()
źródło