Python Pandas:匹配字典键替换DataFrame列值的循环排障
解决DataFrame中按字典精确匹配替换列值的问题
问题根源
你之前的循环错误大概率是因为用了包含匹配(比如'iPhone 14' in phone_name)而非精确匹配,导致所有包含"iPhone 14"的型号(如"iPhone 14 Pro")都误匹配到"iPhone 14"对应的电池值。
最优解决方案(无需循环,高效准确)
假设你的字典定义如下:
iphone_dict = { "iPhone 14": 3279, "iPhone 14 Pro": 3200, "iPhone 14 Pro Max": 4323 }
方法1:使用map()(推荐)
仅替换匹配到字典键的行,未匹配的保留原Battery值:
df['Battery'] = df['Phone Name'].map(iphone_dict).fillna(df['Battery'])
方法2:使用replace()
直接替换匹配到的型号对应的电池值:
df['Battery'] = df.replace({'Phone Name': iphone_dict})['Battery']
若坚持使用循环(不推荐,效率低)
需确保精确匹配字典键,同时使用df.at修改原DataFrame:
for idx, row in df.iterrows(): phone_name = row['Phone Name'] if phone_name in iphone_dict: df.at[idx, 'Battery'] = iphone_dict[phone_name]
内容的提问来源于stack exchange,提问作者Austin Kwak
相关产品推荐
相关产品推荐

