如何更快实现Pandas单列内多个字符串值批量替换为同一值
Pandas多值统一替换高效实现方案
你目前用字典映射的写法是可行的,但要批量将多个值替换为同一个目标值时,有更简洁、维护成本更低的实现方式,推荐两种常用方案:
- 方案1:
replace()列表参数写法(中小数据量首选,最直观)
直接把所有需要替换的字符串放到列表作为第一个参数,第二个参数填写统一替换的目标值即可,不需要逐个编写键值对:
import pandas as pd df = pd.DataFrame({'a':["US", "Japan", "UK", "China", "Peru", "Germany"]}) # 后续新增需要替换的值,直接往列表里加即可 to_replace = ['Japan','UK','China'] df['a'] = df['a'].replace(to_replace, 'Germany') print(df)
运行结果和你给出的预期输出完全一致。
- 方案2:
isin()+loc写法(大数据量首选,性能更高)
如果你的DataFrame数据量很大(百万行及以上),用矢量化的isin判断性能会比replace高不少:
to_replace = ['Japan','UK','China'] df.loc[df['a'].isin(to_replace), 'a'] = 'Germany'
两种方案都只需要维护一个待替换字符串列表,就算你要替换的字符串有几十个,也只需要往列表里新增元素即可,不需要重复写目标值,比原来的字典写法维护成本低很多。
内容的提问来源于stack exchange,提问作者codedancer
相关产品推荐
相关产品推荐

