Python DataFrame批量替换账号列值或新增账号名列的实现方法
解决DataFrame账号匹配账号名的问题
核心思路
利用Pandas的关联合并或字典映射两种方式,批量完成账号到账号名的匹配,无需手动逐个替换。
步骤1:读取数据
先把主DataFrame和账号映射表都读入Pandas:
import pandas as pd # 读取你的主数据(如果是CSV就用read_csv) main_df = pd.read_excel('主数据文件.xlsx') # 读取账号-账号名映射表 mapping_df = pd.read_excel('账号映射表.xlsx')
方法一:新增账号名列(保留原账号)
用merge做左关联,既能保留主数据所有行,又能匹配对应账号名:
# 根据「账号」列关联,新增「账号名」列 result_df = pd.merge(main_df, mapping_df, on='账号', how='left')
how='left':确保主数据里的所有行都保留,即使某个账号在映射表里找不到,对应「账号名」会显示NaN。
方法二:直接替换原账号列/映射新增列
先把映射表转成账号:账号名的字典,再用map批量映射:
# 构建账号到账号名的字典 account_name_dict = mapping_df.set_index('账号')['账号名'].to_dict() # 新增「账号名」列 main_df['账号名'] = main_df['账号'].map(account_name_dict) # 如果要直接替换原「账号」列,执行下面这行 # main_df['账号'] = main_df['账号'].map(account_name_dict)
补充处理:缺失值
如果主数据里有账号不在映射表中,map或merge会返回NaN,可以用fillna统一替换:
# 把未匹配到的账号名设为「未知账号」 main_df['账号名'] = main_df['账号名'].fillna('未知账号')
内容的提问来源于stack exchange,提问作者user20030492
相关产品推荐
相关产品推荐

