Я работаю над медицинским проектом. У меня есть большой набор данных, который мне пришлось очистить и преобразовать. У меня есть специальный столбец (df ['code']), в котором есть номера, соответствующие кодам. Теперь я хочу заменить все коды, количество которых меньше 250, на другое значение, соответствующее интервалам. Часть кода уже выполнена:
# Save some codes
threshold_count = 250
count_diag = Counter(df['code'])
small_codes_itens = [k for k, count in count_diag.items() if count < threshold_count]
# Only codes with less than 250
small_diagcodes = df['code'][df['code'].isin(small_codes_itens)].str.slice(start=0, stop=3, step=1)
small_diagcodes = small_diagcodes[~small_diagcodes.str.contains("[a-zA-Z]").fillna(False)]
small_diagcodes.fillna(value='1500', inplace=True)
small_diagcodes = small_diagcodes.astype(int)
ranges = [(1, 140), (140, 240), (240, 280), (280, 290), (290, 320), (320, 390),
(390, 460), (460, 520), (520, 580), (580, 630), (630, 680), (680, 710),
(710, 740), (740, 760), (760, 780), (780, 800), (800, 1000), (1000,2000)]
Таким образом, counter_diag просто используется для выбора кодов, которые появляются менее 250 раз. Я просто хочу работать с этими кодами. Поэтому я сохраняю эти коды в small_diagcodes. То, что находится в этой переменной, равно 50, или 192, или 250, ..., которые являются не количествами, а самим кодом. Так, например, если 50 - это код, который появляется менее 250 раз, он будет выбран. Затем я хочу заменить в каждой строке df ['code'] = 50 на 0, поскольку он соответствует первому диапазону, т. Е. (1 140).
Как я могу это сделать?