基于Python循环匹配行实现多列合并:Excel风速数据整合求助
解决方案:匹配时间序列并合并风速值
针对你的需求,这里提供三种实用的实现方式,覆盖不同场景需求:
方案1:Excel内置函数快速匹配
适合Excel 365/2021及以上版本:用XLOOKUP
假设文件1的时间列在A列,文件2的时间列在A列、风速列在B列,在文件1的空白列(比如B2单元格)输入公式:
=XLOOKUP(A2, '[Excel文件2.xlsx]Sheet1'!$A:$A, '[Excel文件2.xlsx]Sheet1'!$B:$B, "无匹配")
下拉填充即可完成所有行的匹配,无对应记录时会显示“无匹配”,可自行修改提示文本。
兼容旧版Excel:用VLOOKUP+IFERROR
公式示例:
=IFERROR(VLOOKUP(A2, '[Excel文件2.xlsx]Sheet1'!$A:$B, 2, FALSE), "无匹配")
FALSE表示精确匹配时间序列IFERROR用来替换无匹配时的#N/A错误提示
方案2:Power Query批量合并(大数据量首选)
- 打开文件1,点击「数据」选项卡 → 获取数据 → 从文件 → 从工作簿,导入文件2的数据
- 在Power Query编辑器中,选中两个表格的时间列,点击「合并查询」→ 选择「内部合并」(仅保留匹配行)或「左外部合并」(保留文件1所有行)
- 展开合并后的列,勾选“风速”列,最后点击「关闭并上载」,结果会自动导入新工作表
方案3:Python脚本自动化处理(适合重复执行或复杂场景)
先安装依赖库:
pip install pandas openpyxl
然后运行以下脚本:
import pandas as pd # 读取两个Excel文件 df_standard = pd.read_excel("Excel文件1.xlsx") df_wind = pd.read_excel("Excel文件2.xlsx") # 按时间列合并,保留文件1所有行,匹配不到的风速显示NaN merged_result = pd.merge(df_standard, df_wind[["时间", "风速"]], on="时间", how="left") # 保存合并结果 merged_result.to_excel("合并后的时间序列.xlsx", index=False)
如果只需要保留两边都匹配的行,把how="left"改成how="inner"即可。
内容的提问来源于stack exchange,提问作者Kaiyuan Zheng
相关产品推荐
相关产品推荐

