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

如何用Pandas从固定列读取Excel至最后非空列?

自动读取Excel指定行从固定列到最后非空列的方案

方法一:不修改Excel,自动识别最后非空列

先读取目标行的全部数据,定位最后一个非空列的位置,再按需读取:

  1. 读取第一行所有数据(仅一行),获取完整的行数据
import pandas as pd
from openpyxl.utils import get_column_letter, column_index_from_string

# 先读取第一行全部内容
temp_df = pd.read_excel("your_file.xlsx", header=None, nrows=1)

# 确定起始列F对应的索引(pandas列索引从0开始)
start_col_idx = column_index_from_string("F") - 1

# 从起始列开始,找到最后一个非空值的列索引
row_data = temp_df.iloc[0, start_col_idx:]
last_non_empty_idx = row_data.last_valid_index()

# 转换为Excel列名格式
start_col = "F"
end_col = get_column_letter(last_non_empty_idx + 1)  # 转成1-based列号匹配Excel格式

# 最终读取指定范围
final_df = pd.read_excel("your_file.xlsx", header=None, nrows=1, usecols=f"{start_col}:{end_col}")

方法二:修改Excel标记结束列,精准定位

如果允许修改Excel,可在目标行的最后一列右侧输入特殊标记(比如END),然后读取到标记列之前:

  1. 在Excel中,找到目标行(第一行),在最后一个有效列的右侧单元格输入END
  2. 用代码定位标记位置并读取:
import pandas as pd
from openpyxl.utils import column_index_from_string, get_column_letter

# 读取第一行全部内容
temp_df = pd.read_excel("your_file.xlsx", header=None, nrows=1)

# 起始列F的索引(pandas 0-based)
start_col_idx = column_index_from_string("F") - 1

# 找到标记"END"所在的列索引
end_marker_idx = temp_df.iloc[0, start_col_idx:].tolist().index("END") + start_col_idx

# 计算实际需要读取的最后一列(标记列的前一列)
actual_end_col_idx = end_marker_idx - 1
end_col = get_column_letter(actual_end_col_idx + 1)

# 读取指定范围
final_df = pd.read_excel("your_file.xlsx", header=None, nrows=1, usecols=f"F:{end_col}")

注意事项

  • 上述代码兼容pandas 1.3.4版本,last_valid_index()和read_excel的参数在该版本中均可用
  • 如果Excel存在合并单元格,需提前处理,避免干扰非空列的判断

内容的提问来源于stack exchange,提问作者Or b

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:12:21