如何用Python从另一CSV文件为目标CSV添加匹配的Service列?
嘿,这个根据ID匹配添加列的需求其实挺常见的,我给你两种实用的解决办法,不管你习惯写代码还是用Excel手动操作都能搞定:
方法1:用Python Pandas快速批量处理
如果你熟悉Python,用Pandas库可以几行代码搞定,效率特别高:
首先确保你已经安装了Pandas,打开终端运行:
pip install pandas
然后创建一个Python脚本(比如match_service.py),写入以下代码:
import pandas as pd # 读取两个CSV文件(如果你的CSV是空格分隔,记得加sep='\s+'参数) services_df = pd.read_csv('services.csv') test_df = pd.read_csv('test.csv') # 根据ServiceID进行左连接,把services里的Service列匹配到test表中 merged_df = pd.merge(test_df, services_df, on='ServiceID', how='left') # 保存更新后的文件,index=False是避免生成额外的索引列 merged_df.to_csv('updated_test.csv', index=False)
运行脚本后,你会得到一个updated_test.csv,里面已经包含匹配好的Service列了。how='left'的作用是保证test.csv里的所有行都能保留,哪怕有ServiceID在services.csv里找不到的情况(当然你的数据里应该都是能匹配上的)。
方法2:用Excel的VLOOKUP手动匹配
如果你不想写代码,用Excel自带的VLOOKUP函数也能轻松实现:
- 同时打开
test.csv和services.csv两个文件 - 在
test.csv里找到第一个空白列(比如原表最后一列是Lon,后面的空列),在第一行数据对应的单元格(比如第2行的空白列单元格)输入公式:
=VLOOKUP(C2, [services.csv]Sheet1!$A:$B, 2, FALSE)
公式解释:
C2:test.csv里当前行的ServiceID所在单元格(因为你的test.csv里ServiceID是第3列,对应Excel的C列)[services.csv]Sheet1!$A:$B:services.csv里的ServiceID和Service列范围2:要提取的是services.csv里的第2列(也就是Service列)FALSE:表示精确匹配
- 把这个公式下拉填充到所有行,就能自动匹配出每一行对应的Service内容了
- 最后可以把公式转换成数值(选中Service列→右键→复制→右键→选择性粘贴→数值),再保存文件即可
小提示: 如果你的CSV文件是用空格分隔的,在Excel导入的时候要选择「空格」作为分隔符,确保列能正确识别。
内容的提问来源于stack exchange,提问作者Damian
相关产品推荐
相关产品推荐

