Самый безопасный вариант - преобразовать все имена столбцов в строки (поэтому df[0]
-> df['0']
) перед тем, как сделать это:
df.rename(columns={c: str(c).strip() for c in df.columns}, inplace=True)
При использовании итераций по столбцу используется словарное пониманиеимена df.columns
, а затем создайте отображение из исходного имени столбца c
в строковую версию str(c)
.Затем он использует собственный .strip()
строковый метод.Вы выполняете его как однострочник, используя inplace=True
.
Ближе к цели исходного вопроса:
df.columns = [col.strip() if isinstance(col, str) else col for col in df.columns]
... но я бы предложил не использовать это,Так как числовые имена столбцов могут сбивать с толку (например, если столбец 5 находится в позиции 3).С именем строки ясно, что это не позиционное значение.