AttributeError: при выполнении цикла объект «numpy .ndarray» не имеет атрибута «между» - PullRequest
0 голосов
/ 22 апреля 2020

У меня возникают трудности с преобразованием части столбца в другое значение. В основном, в зависимости от значения, которое имеет определенная ячейка, это значение будет заменено другим, в соответствии с «диапазонами». Вот код:

# 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)]

# Re-code in terms of integer
for num, cat_range in enumerate(ranges):
    small_diagcodes = np.where(small_diagcodes.between(cat_range[0],cat_range[1]), num, small_diagcodes)

Однако у меня есть ошибка, и я не могу ее исправить. Я знаю только то, что находится в части 'for', и я также знаю, что проблема заключается в том, что когда я делаю (isinstance (small_diagcodes, pd.Series)), перед l oop будет 'True', а после l oop Неверно Это похоже на мгновенное преобразование из серии в массив.

AttributeError: 'numpy.ndarray' object has no attribute 'between'

Кто-нибудь может мне помочь, пожалуйста? Например, заменить l oop на другую вещь?

1 Ответ

0 голосов
/ 22 апреля 2020

Вместо оператора before попробуйте:

np.logical_and(small_diagcodes>cat_range[0], small_diagcodes<cat_range[1]))
...