Цикл с несколькими условиями для распределения значений в 5 равных группах - сбивающий с толку результат - PullRequest
0 голосов
/ 15 марта 2020

Я знаю, что задача довольно простая, но не могу найти ошибку.

Мне нужно отсортировать значения в 5 равных группах на основе условий, которые различны для каждой строки в df.

Для распределения в равных группах я использую функцию процентиля. В результате у меня должно быть 5 групп с равным количеством составляющих.

Я использую следующий код:

df = pd.read_excel('data.xlsx', sheet_name=['Cap'], index_col='Date')
year = list(df.index)
stocks = list(df.columns)
df = df.to_numpy()

for y in range(len(year)):

    for j in range(len(stocks)):

            if (df[y][j] > np.nanpercentile(df[y], 80)):
                df[y][j] = 5
            elif (df[y][j] > np.nanpercentile(df[y], 60)):
                df[y][j] = 4
            elif (df[y][j] > np.nanpercentile(df[y], 40)):
                df[y][j] = 3
            elif (df[y][j] > np.nanpercentile(df[y], 20)):
                df[y][j] = 2
            elif (df[y][j] > np.nanpercentile(df[y], 0)):
                df[y][j] = 1
            else:
                df[y][j] = np.NaN

Однако, когда я экспортирую данные в Excel и считаю количество чисел составляющих для каждой группы в каждой строке, я получаю запутанный результат.

The result in excel

Не могли бы вы, пожалуйста, помогите мне решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...