使用Python合并Excel文件时出现空行问题求助
问题
我有大量格式相同的Excel文件,希望将它们合并为一个文件。目前我尝试用pandas编写简单循环合并两个文件,合并成功但最终文件中两个文件的数据之间出现了空行。我检查了df.shape和AllData.shape,数据量是正确的,且输入文件中没有空行、空文件,空行恰好位于两个文件的衔接处。所有Excel文件首行都是相同的列名,怀疑这和空行问题有关,作为pandas新手,我无法找到问题原因,请求帮助。
代码如下:
import pandas as pd import glob as glob listExcel=glob.glob("/content/*.xlsx") AllData=pd.DataFrame() for f in listExcel: df=pd.read_excel(f) AllData=pd.concat([AllData,df]) AllData.to_excel("AllData.xlsx")
解决方案
问题根源是合并后的数据索引不连续,to_excel写入时会自动填充空行来对齐索引位置,导致两个文件衔接处出现空行。
给你两种简单的解决办法:
方法一:合并时重置索引
在pd.concat里添加ignore_index=True参数,每次合并都会重新生成连续的索引:
import pandas as pd import glob as glob listExcel=glob.glob("/content/*.xlsx") AllData=pd.DataFrame() for f in listExcel: df=pd.read_excel(f) # 加上ignore_index=True,合并后自动重置索引 AllData=pd.concat([AllData, df], ignore_index=True) AllData.to_excel("AllData.xlsx", index=False)
方法二:写入Excel时不保存索引
写入文件时加上index=False,避免把索引列写入Excel(建议和方法一配合使用,保证数据内部索引逻辑更合理):
AllData.to_excel("AllData.xlsx", index=False)
举个例子:第一个文件的索引是0-99,第二个是0-199,合并后索引就变成0-99、0-199,写入Excel时pandas会按最大索引值(199)来排版,第一个文件的索引100-199位置就会显示为空行,重置索引后索引变成0-299,自然就没有空行了。
内容的提问来源于stack exchange,提问作者Thomas Moreau
相关产品推荐
相关产品推荐

