Мне дан набор данных со многими значениями NaN, и я хотел заполнить нулевое значение средним значением каждого столбца. Поэтому я попробовал следующий код:
def fill_mean():
m = [df.columns.get_loc(c) for c in df.columns if c in missing]
for i in m:
df[df.columns[i]] =df[df.columns[i]].fillna(value=df[df.columns[i]].mean())
return df
но я получаю эту ошибку:
TypeError: must be str, not int
Все столбцы, которые я пытаюсь заполнить, состоят из одного типа: «float64» или «O».
Я подозреваю, что проблема проистекает из этого факта, но как я могу решить ее?
Редактировать: Я создал словарь, содержащий столбец, который содержит индекс столбцов, в которых отсутствуют некоторые данные, и тип каждого столбца.
di = dict(zip(missing, m2))
def fill_mean():
m = [df.columns.get_loc(c) for c in df.columns if c in missing]
for i in m:
if di[m] == "dtype('float64')":
df[df.columns[i]] = df[df.columns[i]].fillna(value=df[df.columns[i]].mean())
return df
Если я запускаю fill_mean (), теперь я получаю другую ошибку:
if di[m] == "dtype('float64')":
TypeError: unhashable type: 'list'