У меня есть большой DataFrame со слишком большим количеством функций, чтобы идти один за другим, выбирая их dtype.Но многие столбцы имеют похожие имена, поэтому я просмотрел и организовал списки ключевых слов, которые, как мне известно, содержатся в именах столбцов.
Таким образом, у каждого dtype есть список ключевых слов (т.е. числовой = ['test1 ',' test2 '], потому что многие числовые столбцы содержат одну из этих строк. Я также делаю то же самое для столбцов, которые я хочу отбросить и запустить в первую очередь, что не вызывает проблем (сначала я запускаю его, поэтому могу вменять значения без полученияошибка за попытку вменения с помощью Нана).
Вот что у меня есть:
def order_columns(results):
results_df_temp = results.loc[:, results.columns]
# Dropped columns
for col in results_df_temp:
for d in drop:
if d in str(col):
results_df_temp.drop(columns=col, axis=1, inplace=True)
results_df_temp = results_df_temp[results_df_temp.columns.drop(list(results_df_temp.filter(regex=d)))]
# Numerical/Ordinal/Categorical Columns
for col in results_df_temp:
# Numerical
for n in numerical:
if n in str(col):
results_df_temp.fillna(results_df_temp[col].median(), axis=1, inplace=True) # fill median for numerical
results_df_temp[col] = results_df_temp[col].astype('float')
# Ordinal
for o in ordinal:
if o in str(col):
results_df_temp.fillna(results_df_temp[col].mode(), axis=1, inplace=True) # fill mode for ordinal
results_df_temp[col] = results_df_temp[col].astype('int')
# Categorical
for c in categorical:
if c in str(col):
results_df_temp.fillna(results_df_temp[col].mode(), axis=1, inplace=True) # fill mode for categorical
results_df_temp[col] = results_df_temp[col].astype('category')
return results_df_temp
Я получаю ошибку "Недопустимый литерал для int () с основанием 10:", а затемэто дает название категорической функции, но я не могу понять, что не так с этим кодом