#python #pandas
Вопрос:
Пусть у меня есть фрейм данных df
Name Age Job
Rick 24 Worker
Max 20 Worker
Sam 48 Driver
Expected output:
Name
Job
Теперь я хочу распечатать тот столбец(имя), в котором есть данные типа объекта.
Вот моя попытка:
for column in df:
if df.dtypes(column) == 'object':
print(column)
Но я получаю ошибку, которая заключается в:
«если df.dtypes(столбец) == ‘объект’: Ошибка типа: объект «Серия» не может быть вызван «
Ответ №1:
Вы можете использовать df.select_dtypes
следующее:
df.select_dtypes('object').columns.to_list()
Выход:
['Name', 'Job']
Или:
for column in df:
if df[column].dtype == 'object':
print(column)
Ответ №2:
Вы можете использовать понимание списка:
[x for x in df.columns if df[x].dtype == object]
Выход:
['Name', 'Job']
Ответ №3:
Попробуй
df.columns[df.dtypes == object].to_list()
что дает
>> ['Name', 'Job']
Ответ №4:
Ошибка вызвана циклом for. Попробуй:
for column in df.columns:
if type(column) == 'object':
print(column)
Ответ №5:
Вот такая попытка:
код:
df.dtypes[df.dtypes == 'object'].index.values
С принтами:
array(['Name', 'Job'], dtype=object)
Для распечатки самих колонок:
[print(val) for val in df.dtypes[df.dtypes == 'object'].index]
Name
Job
Ответ №6:
import numpy as np
# Get columns whose data type is object
filteredColumns = df.dtypes[df.dtypes == np.object]
# List of columns whose data type is object
listOfColumnNames = list(filteredColumns.index)
print(listOfColumnNames)
Выход:
[«Имя», «Работа»]
Ответ №7:
Другой подход:
[print(col) for col in df.select_dtypes(include = object).columns]
Name
Job