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

如何读取Excel中‘End’标记前的列并导入Pandas DataFrame?

解决方案

1. 截取End标记前的列

你之前的写法存在两个问题:

  • df.iloc[:, : df != 'End'] 传入iloc的切片位置要求为整数,布尔矩阵无法作为切片参数
  • 遍历列名查找End无效,因为End存储在对应列的首行单元格值中,而非列名

正确实现代码:

# 检查首行是否存在值为End的单元格
end_col_mask = df.iloc[0] == 'End'
if end_col_mask.any():
    # 获取End所在列的整数索引
    end_col_pos = df.columns.get_loc(end_col_mask[end_col_mask].index[0])
    # 截取End列之前的所有列
    df = df.iloc[:, :end_col_pos]

2. 空白单元格识别为NA值

pd.read_excel的na_values参数默认不支持正则匹配,仅会把完全等于传入值的内容识别为NA,因此你的写法无效。可以在读取完成后通过正则替换处理全空白内容:

import numpy as np
# 匹配所有仅含空白字符(含全角空格、换行等不可见空白)的单元格,替换为NaN
df = df.replace(r'^[\s\u3000\n\r]*$', np.nan, regex=True)

如果后续需要统一空置为空白字符串,再执行:

df = df.fillna('')

不推荐使用inplace=True参数,该写法存在潜在副作用,pandas官方已逐步标记为不推荐用法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:18:04