Как заполнить пропущенные значения в столбце на основе другого столбца - PullRequest
0 голосов
/ 08 марта 2019

У меня есть фрейм данных с именем shoes

Brand   Comment
Ugg       NaN
Prada     NaN
Clarks    NaN
Ugg       NaN
Clark     NaN
Prada     Made from horse leather
Prada     Made from pig leather
Prada     NaN
Ugg       Made from Australian cow leather
...

и другой фрейм данных df_mode, полученный с помощью режима комментариев для каждого бренда обуви в фрейме данных shoes для ненулевых значений

Brand  Comment
Ugg    Made from sheep 
Prada  Made from pig leather
Clarks Made from Cow leather

Как я могу назначить пропущенные значения для каждой марки обуви в кадре данных обуви с соответствующим ответом режима, показанным в кадре данных df_mode.

Это в основном то, чего я пытаюсь достичь

Brand   Comment
Ugg       Made from sheep
Prada     Made from pig leather
Clarks    Made from Cow leather
Ugg       Made from sheep
Clark     Made from Cow leather
Prada     Made from horse leather
Prada     Made from pig leather
Prada     Made from pig leather
Ugg       Made from Australian cow leather

Ответы [ 3 ]

0 голосов
/ 08 марта 2019

Использование loc и map:

shoes.loc[shoes.Comment.isna(), 'Comment'] = shoes.Brand.map(df_mode.set_index('Brand')['Comment'])
0 голосов
/ 08 марта 2019

вы можете сначала groupby по столбцу Brand, затем заполнить пропущенные значения.Вот реализация:

df['Comment'] = df.groupby(['Brand'], sort=False)['Comment'].apply(lambda x: x.ffill().bfill())
0 голосов
/ 08 марта 2019

Использование np.where

shoes['Comment']=np.where(shoes['Comment'].isnull(),shoes['Brand'].map(dict(zip(df_mode['Brand']))),df_mode['Comment'],shoes['Comment'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...