Я новичок в python, и я нашел это сообщество довольно полезным. Я нашел много ответов на мои другие вопросы, но я не могу понять это.
Я пытаюсь написать функцию для обхода столбцов и замены '%', '$' и ','. Когда я импортирую .csv через панд, у меня есть около 80/108 столбцов, которые представляют собой dtype == объект, который мне нужно конвертировать в float.
Я нашел, что могу написать:
df['column_name'] = df['column_name].str.replace('%', '')
и он успешно выполняется и удаляет%.
К сожалению, у меня много столбцов (108), и я хочу написать функцию для решения проблемы. Я пришел с приведенным ниже кодом, который будет выполняться только в некоторых столбцах и выдает странную ошибку:
# get column names
col_names = list(df.columns.values)
# start cleaning data
def clean_data(x):
for i in range(11, 109, 1):
if x[col_names[i]].dtype == object:
x[col_names[i]] = x[col_names[i]].str.replace('%', '')
x[col_names[i]] = x[col_names[i]].str.replace('$', '')
x[col_names[i]] = x[col_names[i]].str.replace(',', '')
AttributeError: 'DataFrame' object has no attribute 'dtype'
Даже если ошибка останавливает процесс, некоторые столбцы очищаются. Я не могу понять, почему он не очищает все столбцы, а затем возвращает ошибку «dtype».
Я использую Python 3.6.