Я пытаюсь заполнить режимом группы из того же столбца (это столбец с категориальным текстом) другим столбцом (это тоже столбец с категориальным текстом).
Обратите внимание, что аналогичный вопрос, опубликованный Кришной Бандхакави 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, так как он очень большой.