使用Pandas读取含跨多行合并单元格的Excel时如何按首列合并对应行?
解决方案
该需求可以实现,Pandas读取Excel时不会自动识别合并单元格规则,可通过两步数据处理完成行合并操作:
核心处理逻辑
- 第一步:填充首列(合并列)的空值:Excel合并单元格仅首行存储内容,其余行读取后为NaN,使用向前填充方法即可给同一合并组的所有行赋值相同的首列内容
- 第二步:按首列分组聚合:对同一分组内其他列的非空内容按需求拼接,即可完成合并
代码示例
import pandas as pd # 读取Excel文件 df = pd.read_excel("你的文件路径.xlsx") # 1. 向前填充首列Col1的空值,完成合并组标记 df["Col1"] = df["Col1"].ffill() # 2. 自定义聚合函数:忽略空值后用换行符拼接内容,可根据需求换成空格、逗号等分隔符 def merge_content(x): return "\n".join(x.dropna().astype(str)) # 3. 按Col1分组,所有列应用聚合逻辑 result_df = df.groupby("Col1", as_index=False).agg(merge_content)
补充说明
- 若需保留原首行的索引值,可在聚合规则中指定
Index列取最小值:result_df = df.groupby("Col1", as_index=False).agg({"Index": "min", "Col2": merge_content, "Col3": merge_content}) - 单元格内部的多行内容读取时会默认保留换行符,若无需保留可将拼接分隔符替换为空格,或最终对全表执行
result_df = result_df.replace("\n", " ", regex=True) - 该方法支持批量处理大型Excel文件,内存占用可控,无需额外依赖库
内容的提问来源于stack exchange,提问作者Pearl
相关产品推荐
相关产品推荐

