Я пытаюсь заполнить некоторые отсутствующие категориальные значения столбца. У меня 2 колонки. Один категоричен, а другой нет. Если в категориальном столбце отсутствует значение, я хочу присвоить ему значение на основе категориального значения с наибольшим количеством счетчиков.
Мои столбцы выглядят так:
School_Assigned Will_You_Enroll_There
Anderson Yes
Williams No
Anderson NaN
Anderson Yes
Anderson Maybe
Исходя из этого, значение NaN должно содержать Да, так как количество ответов Да (для Андерсона) больше, чем количество ответов Нет и Возможно. School_Assigned и Will_You_Enroll_There — столбцы 10 и 11 соответственно. Мой фрейм данных называется gt_Exam.
Вот мой код:
enroll_categories = ["Yes", "No", "Maybe"]
count1 = 0
count2 = 0
count3 = 0
for i in range(len(gt_Exam)):
if pd.isna(gt_Exam.iloc[i, 11]) == True:
value = gt_Exam.iloc[i, 10]
for j in range(len(gt_Exam)):
if (gt_Exam.iloc[j, 10] == value) & (gt_Exam.iloc[j, 11] == enroll_categories[0]):
count1 += 1
elif (gt_Exam.iloc[j, 10] == value) & (gt_Exam.iloc[j, 11] == enroll_categories[1]):
count2 += 1
elif (gt_Exam.iloc[j, 10] == value) & (gt_Exam.iloc[j, 11] == enroll_categories[2]):
count3 += 1
maximum_categories = max(count1, count2, count3)
if maximum_categories == count1:
gt_Exam.iloc[i, 11] = enroll_categories[0]
elif maximum_categories == count2:
gt_Exam.iloc[i, 11] = enroll_categories[1]
else:
gt_Exam.iloc[i, 11] = enroll_categories[2]
По какой-то причине я получаю KeyError: 0
Возможно ли, что у вас есть группы, в которых все NaN?
Да, они есть.
Вы можете попробовать
get(0)
вместо[0]
, посмотрите на редактирование.Идеальный!! Слаженно работал! Большое спасибо!!
Рад найти более чистые способы работы с данными вместо неуклюжих способов в моем стремлении стать Data Scientist!