You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:01:45