#python #pandas #dataframe
#python #pandas #dataframe
Вопрос:
У меня есть фрейм данных под названием 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
Как я могу присвоить недостающие значения для каждой марки обуви во фрейме данных shoes с соответствующим ответом режима, показанным во фрейме данных 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
Ответ №1:
Используя loc
и map
:
shoes.loc[shoes.Comment.isna(), 'Comment'] = shoes.Brand.map(df_mode.set_index('Brand')['Comment'])
Ответ №2:
Используя np.where
shoes['Comment']=np.where(shoes['Comment'].isnull(),shoes['Brand'].map(dict(zip(df_mode['Brand']))),df_mode['Comment'],shoes['Comment'])
Ответ №3:
вы можете сначала groupby
по столбцу Brand, затем заполнить недостающие значения. вот реализация:
df['Comment'] = df.groupby(['Brand'], sort=False)['Comment'].apply(lambda x: x.ffill().bfill())