Мне дан набор данных со многими значениями 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'