Попытка преобразовать все столбцы, являющиеся объектами, в строки

#python #pandas #dataframe #casting

#python #pandas #фрейм данных #Кастинг

Вопрос:

Существует довольно много вопросов, связанных с преобразованием определенного столбца или всех столбцов, но не нескольких конкретных столбцов, где dtype есть что-то конкретное. Теперь, если я получил данные с некоторыми столбцами, равными object s, я хотел бы видеть, как эти конкретные столбцы преобразуются в строки.

Я думаю, что в настоящее время я делаю что-то вроде:

 for column in calls.columns:
    if calls[column].dtype == 'object':
        calls[column] = calls[column].astype(str)
  

Но я ищу более питонический способ.

Ответ №1:

вы можете использовать следующий код:

 calls[calls.select_dtypes(include='object').columns] = calls.select_dtypes(include='object').astype(dtype='category')
  

Ответ №2:

В зависимости от имеющейся у вас версии pandas, «object» — это строковый тип.

Тем не менее, вы могли бы сделать это:

 df.astype({col: str for col in df.select_dtypes('object').columns})
  

Или эквивалент:

 df.astype({col: str for col, dtype in df.dtypes.items() if dtype=='object'})