Как Fillna с режимом из той же группы столбцов другой текстовой категориальный столбец в пандах - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь заполнить режимом группы из того же столбца (это столбец с категориальным текстом) другим столбцом (это тоже столбец с категориальным текстом).

Обратите внимание, что аналогичный вопрос, опубликованный Кришной Бандхакави 23 сентября в 3:05, но не помог в моем случае.

Попытка 1:

df['col2'] = df.groupby('col1')['col2'].apply(lambda x: x.fillna(x.mode()))
    df_cpt['col2'].unique()

без ошибок, но дает ниже и обратите внимание, что nan все еще присутствует.

array(['Passed', nan, 'Pending', 'Registered', 'Applied for sign Off',
       'Verbal', 'Not Applicable'], dtype=object)

Попытка 2:

df['col2'] = df.groupby('col1')['col2'].apply(lambda x: x.fillna(x.mode().index[0))

выдает ошибку ниже:

IndexError: индекс 0 выходит за пределы оси 0 с размером 0

df
--

col1   col2   col3   col4
----   ----   ----   ----
Brod   Pass   xxx    xxx
PSTN   InP    xxx    xxx
LL     InP    xxx    xxx
Fibr   NaN    xxx    xxx
Brod   Pass   xxx    xxx
PSTN   NaN    xxx    xxx
LL     InP    xxx    xxx
Fibr   Pass   xxx    xxx
Brod   NaN    xxx    xxx
PSTN   InP    xxx    xxx
LL     InP    xxx    xxx
Fibr   InP    xxx    xxx
Brod   Pass   xxx    xxx
PSTN   Pass   xxx    xxx
LL     InP    xxx    xxx
Fibr   Pass   xxx    xxx

df['col2'] = df.groupby('col1')['col2'].apply(lambda x: x.fillna(x.mode()))
df_cpt['col2'].unique()

output: 
array(['Passed', nan, 'Pending', 'Registered', 'Applied for sign Off',
       'Verbal', 'Not Applicable'], dtype=object)

df['col2'] = df.groupby('col1')['col2'].apply(lambda x: x.fillna(x.mode().index[0))

выход: * * тысяча двадцать-один

IndexError: индекс 0 выходит за пределы оси 0 с размером 0

Ожидается, что нан должен исчезнуть с модой столбца. Пожалуйста помоги. Я не могу вставить здесь весь df, так как он очень большой.

...