excel学习库

excel表格_excel函数公式大全_execl从入门到精通

青鸟飞扬 用Excel公式vlookup+iferror和Python批量替换

一、问题缘起

有人在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')

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接