如何修改Pandas中Excel列的读取解析,保留Test Code完整内容?
解决Pandas读取Excel时「Test Code」列丢失后缀信息的问题
问题根源
Excel中「Test Code」列被设置为日期格式,Pandas读取时会自动将其解析为日期类型,导致原本的XX10.X/XX12.X格式被错误转换,丢失了点后的关键信息。
解决方案
方法一:读取时指定列转换规则
使用read_excel的converters参数,强制将「Test Code」列按字符串读取:
import os import pandas as pd file = "H2020_TRI-HP_T6.2_PropaneIceFaultTests_v1" folder = r"J:\Downloads" # 加r避免路径转义字符报错 file_path = os.path.join(folder, file + ".xlsx") # 指定Test Code列以字符串形式读取 df = pd.read_excel(file_path, sheet_name="NF10", converters={"Test Code": str}) print(df["Test Code"])
方法二:强制指定列数据类型
如果确定「Test Code」列全为文本内容,可直接用dtype参数指定类型:
df = pd.read_excel(file_path, sheet_name="NF10", dtype={"Test Code": str})
方法三:直接读取单元格原始文本(备用方案)
若上述方法无效,可借助openpyxl直接读取Excel单元格的原始显示文本(需先安装:pip install openpyxl):
import os import pandas as pd from openpyxl import load_workbook file = "H2020_TRI-HP_T6.2_PropaneIceFaultTests_v1" folder = r"J:\Downloads" file_path = os.path.join(folder, file + ".xlsx") wb = load_workbook(file_path, data_only=False) # data_only=False读取单元格显示的文本 ws = wb["NF10"] # 假设「Test Code」是第1列(A列),从第2行开始是数据(跳过表头) test_codes = [cell.value for cell in ws["A"][1:]] df = pd.DataFrame({"Test Code": test_codes}) print(df["Test Code"])
后续筛选操作
获取完整格式的「Test Code」列后,即可正常进行筛选,比如筛选符合XX10.X/XX12.X格式的条目:
# 筛选格式为XX10.X/XX12.X的条目 filtered_df = df[df["Test Code"].str.match(r"[A-Z]{2}\d{2}\.\d")]
内容的提问来源于stack exchange,提问作者Francisco Santoro
相关产品推荐
相关产品推荐

