Ранжирование столбцов данных - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь использовать функцию ранга для двух столбцов в моем фрейме данных.

Задача :

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

ОШИБКА : ValueError: Несоответствие длины: ожидаемая ось имеет 1122 элемента, новые значения имеют 1814 элементов

 df_source['col1'] = df_source['col1'].apply(lambda \
    x:x.strip()).replace('',np.nan)

 df_source['Rank'] = df_source.groupby(by=['col0','col1']) \
    ['col1'].transform(lambda x: x.rank(na_option='bottom'))


      **Actual:**

        col0   col1
        98630  a
               a
        90211  a
        31111  a
               b
        23323  c

    **Expected**

        col0   col1  Rank
        98630  a      1
               a      2
        90211  a      1
        31111  a      1
               b      1
        23323  c      1

1 Ответ

0 голосов
/ 25 января 2019

Этот код дает ожидаемый результат.Я попытался избежать функции groupby для столбцов с нулевыми значениями.

    df['col0'] = df['col0'].replace('', np.nan)
    df_int = df.loc[df['col0'].notnull(), 'col1'].unique()
    df = df[~(df['col0'].isin(df_int) & df['col1'].isnull())]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...