律师事务所网站案例,微信如何制作网页,大朗镇仿做网站,云南网络营销公司读取合并单元格并保留合并信息 读取合并单元格并保留合并信息清除各单元格的空格和换行符#xff0c;并去除列名中的空格和换行符 读取合并单元格并保留合并信息 
当我们只是使用 pandas 的 read_excel 方法读取 Excel 文件时#xff0c;我们可能会遇到一个很棘手的问题… 读取合并单元格并保留合并信息 读取合并单元格并保留合并信息清除各单元格的空格和换行符并去除列名中的空格和换行符 读取合并单元格并保留合并信息 
当我们只是使用 pandas 的 read_excel 方法读取 Excel 文件时我们可能会遇到一个很棘手的问题合并单元格的信息将会丢失从而导致我们的数据出现重复或缺失的情况。 
在本篇文章中将介绍使用 pandas 正确地读取包含合并单元格的 Excel 表格支持 xlsx 和 xls。 
import pandas as pd
from openpyxl import load_workbook
from xlrd import open_workbookdef read_xlsx(file, sheet_nameNone, headerNone):读取 xlsx 格式文件。excel  pd.ExcelFile(load_workbook(file), engineopenpyxl)sheet_name  sheet_name or excel.sheet_names[0]sheet  excel.book[sheet_name]df  excel.parse(sheet_name, headerheader)for item in sheet.merged_cells:top_col, top_row, bottom_col, bottom_row  item.boundsbase_value  item.start_cell.value# 1-based index转为0-based indextop_row - 1top_col - 1# 由于前面的几行被设为了header所以这里要对坐标进行调整if header is not None:top_row - header  1bottom_row - header  1df.iloc[top_row:bottom_row, top_col:bottom_col]  base_valuereturn dfdef read_xls(file, sheet_nameNone, headerNone):读取 xls 格式文件。excel  pd.ExcelFile(open_workbook(file, formatting_infoTrue), enginexlrd)sheet_name  sheet_name or excel.sheet_names[0]sheet  excel.book[sheet_name]df  excel.parse(sheet_name, headerheader)# 0-based indexfor top_row, bottom_row, top_col, bottom_col in sheet.merged_cells:base_value  sheet.cell_value(top_row, top_col)# 由于前面的几行被设为了header所以这里要对坐标进行调整if header is not None:top_row - header  1bottom_row - header  1df.iloc[top_row:bottom_row, top_col:bottom_col]  base_valuereturn df 
注来源https://alanlee.fun/2023/04/27/pandas-read-excel-with-merged-cells/ 
清除各单元格的空格和换行符并去除列名中的空格和换行符 
在数据处理过程中字符串中的多余空格和换行符常常会影响数据的整洁性以及后续分析。使用 .replace(‘\n’, ‘’).strip() 可以有效地去除换行符和前后空格但这并不能解决中间空格的问题。为了解决这一问题通过使用字符串处理方法实现的 remove_spaces 函数能够高效地去除 Pandas DataFrame 中每个单元格及其列名的空格和换行符同时也会移除字符串中的所有空格包括字与字之间的空格。 def remove_spaces(df):去除 DataFrame 中各单元格的空格和换行符并去除列名中的空格和换行符。# 处理列名df.columns  [col.replace(\n, ).strip() if isinstance(col, str) else col for col in df.columns]# 处理各单元格去掉所有空格包括中间的空格和换行符return df.apply(lambda col: col.map(lambda x: x.replace(\n, ).replace( , ) if isinstance(x, str) else x))