【青鸟飞扬教育】用Excel公式vlookup+iferror和Python批量替换|csv|文本文件|python
发布日期:2025-01-10 13:17 点击次数:159
一、问题缘起有人在Emeditor群里提问:有下面两张表,一张被替换表,一张参照表,想把替换表的内容根据对照表进行替换,如果对照表没有对应数据就用替换表中原有的内容。经过替换后的表格如下:二、问题的解决1. Excel法题主虽然是在Excel中提问,但是给的是两个txt文件,如下图:经过思考,可以考虑把问题转化为vlookup查询的问题。第一步:用wps打开被替换表,然后把参照表放到sheet2中。第二步:在替换表中新建一列,然后输入表头,在D2中应用下面的公式=IFERROR(VLOOKUP(A2,对照表!A:B,2,FALSE),C2)如下图所示:我把题主所谓的批量替换转化为vlookup查询,如果查询不到,即公式报错,就通过iferror显示C列的内容。填充一个单元格后,然后鼠标放到单元格的右下角,当它变成十字后双击,一键完成全部的替换。第三步,把D列数据转化为值,然后删除C列即可。2. Python法由于事先没有问题主有多少条数据,后来才知道有几千万条,这时用Excel肯定是不行的,因为Excel容纳的数据量有限,故我们就可以用Python来解决这个问题。我们采用python中的pandas,把txt读取成csv文件,然后按照买家昵称合并,之后把被替换表不必替换的数据保留,最后再用pd.to_csv()保存为txt文件。代码如下:import pandas as pd# 从文本文件读取对照表df_mapping = pd.read_csv('对照表.txt', delimiter='\t')# 从文本文件读取被替换表df_replace = pd.read_csv('被替换表.txt', delimiter='\t')# 使用merge进行批量替换df_result = pd.merge(df_replace, df_mapping, on='买家昵称', how='left')# 如果对照表中没有相应数据,保留原城市信息df_result['城市'] = df_result['城市_y'].combine_first(df_result['城市_x'])# 删除多余的列df_result = df_result[['买家昵称', '省份', '城市']]# 将结果保存到文本文件df_result.to_csv('output.txt', index=False, sep='\t')
上一篇:MOLI万站,正式上线