我正尝试在 Pandas 中编写 fillna() 或 lambda 函数,检查 'user_score' 列是否为 NaN,如果是,则使用另一个 DataFrame 中的列数据。我尝试了两个选项:
games_data['user_score'].fillna(
genre_score[games_data['genre']]['user_score']
if np.isnan(games_data['user_score'])
else games_data['user_score'],
inplace = True
)
# but here is 'ValueError: The truth value of a Series is ambiguous'
并且
games_data['user_score'] = games_data.apply(
lambda row:
genre_score[row['genre']]['user_score']
if np.isnan(row['user_score'])
else row['user_score'],
axis=1
)
# but here is 'KeyError' with another column from games_data
我的数据框:
games_data
genre_score
我将非常感谢任何帮助!
genre_score
。你能否提供一些来自games_data
和genre_score
的样本行? - tdyfillna(user_score_by_genre)
。 - tdygames_data.user_score
是否可以从genre_score
值偏离呢?如果不行,你实际上可以跳过fillna()
步骤,直接将映射赋值给games_data.user_score
:games_data.user_score = games_data.genre.map(genre_score.user_score)
。 - tdy