Вам нужно проверить 'NaN'
как строку вместо использования isnan
(предположительно np.isnan
), которое ожидает числовое значение.Но есть несколько других моментов, на которые стоит обратить внимание:
- Вы не определяете, что происходит, когда ваше значение равно , а не
'NaN'
.Без этого вы потеряете другие предметы.Ниже описано, как вы можете определить троичное выражение. my_dataset_clean = my_dataset
не создает копию вашего словаря.Вы должны быть явными, например, my_dataset_clean = my_dataset.copy()
, чтобы сделать это.В противном случае у вас есть только две переменные, указывающие на один и тот же словарь. - Вы можете использовать понимание словаря, чтобы избежать необходимости делать копию своего словаря.
Вот пример со словаремпонимание и троичное выражение:
my_dataset_clean = {k: {k2: 0 if v2 == 'NaN' else v2 for k2, v2 in v.items()} \
for k, v in my_dataset.items()}
Здесь k, v
относится к ключам / значениям во внешнем словаре, а k2, v2
относится к ключам / значениям во внутренних словарях.