Как я могу удалить пробелы из заголовков фреймов данных Pandas?
Я анализирую данные из файла Excel, в некоторых заголовках столбцов которого есть лишние пробелы.
Когда я проверяю столбцы результирующего фрейма данных, например:
df.columns
Результат выглядит так:
Index(['Year', 'Month ', 'Value'])
Следовательно, я не могу бежать
df["Month"]
Мой вопрос, таким образом, заключается в том, как я могу удалить ненужное белое пространство из столбца заголовки?
2 ответа:
Вы можете дать функции методу
rename
. Методstr.strip()
должен делать то, что вы хотите.In [5]: df Out[5]: Year Month Value 0 1 2 3 [1 rows x 3 columns] In [6]: df.rename(columns=lambda x: x.strip()) Out[6]: Year Month Value 0 1 2 3 [1 rows x 3 columns]
Теперь вы можете просто позвонить
.str.strip
в колонках, если вы используете последнюю версию:In [5]: df = pd.DataFrame(columns=['Year', 'Month ', 'Value']) print(df.columns.tolist()) df.columns = df.columns.str.strip() df.columns.tolist() ['Year', 'Month ', 'Value'] Out[5]: ['Year', 'Month', 'Value']
Тайминги
In[26]: df = pd.DataFrame(columns=[' year', ' month ', ' day', ' asdas ', ' asdas', 'as ', ' sa', ' asdas ']) df Out[26]: Empty DataFrame Columns: [ year, month , day, asdas , asdas, as , sa, asdas ] %timeit df.rename(columns=lambda x: x.strip()) %timeit df.columns.str.strip() 1000 loops, best of 3: 293 µs per loop 10000 loops, best of 3: 143 µs per loop
Так что
str.strip
~2 раза быстрее, я ожидаю, что это будет масштабироваться лучше для больших dfs