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

如何将Excel(*.xlsx)文件读取为二维数组?已试Pandas方案遇问题

把Excel(.xlsx)文件转为二维数组的靠谱方案

嘿,我来帮你搞定这个问题!你当前的代码里有个小疏忽:你调用了psi.as_matrix()但没把返回结果存到变量里,最后执行type(psi)当然还是pandas.core.frame.DataFrame——毕竟psi本身就是pandas读取Excel后生成的DataFrame对象,as_matrix()只是返回一个数组,但你没接收它的输出。另外要提一句,as_matrix()现在已经被弃用了,官方更推荐用to_numpy()。

下面给你两个优质方案,按需选择:

方案一:用Pandas(最便捷高效)

这是处理表格数据最常用的方式,代码简洁易维护:

import pandas as pd

# 读取Excel文件,注意:如果你的表格没有表头(像示例数据那样),一定要加header=None
# 不然pandas会把第一行数据当成列名,导致转换后少一行数据
df = pd.read_excel('./Psi130-130.xlsx', header=None)

# 转为numpy数组,再转成Python原生二维列表
two_d_array = df.to_numpy().tolist()

# 验证结果
print(type(two_d_array))  # 输出 <class 'list'>
print(two_d_array)  # 就是你想要的[[1, 2, 3, 4], [5, 4, 3, 1], [2, 3, 4, 6]]

方案二:用OpenPyXL(轻量无依赖)

如果你不想引入pandas这类重型库,用OpenPyXL直接读取单元格数据会更轻量化:

from openpyxl import load_workbook

# 加载Excel文件,data_only=True表示读取单元格的实际值而非公式
wb = load_workbook('./Psi130-130.xlsx', data_only=True)
ws = wb.active  # 获取当前活跃的工作表

two_d_array = []
# 遍历每一行,values_only=True直接获取单元格值
for row in ws.iter_rows(values_only=True):
    # 过滤掉可能存在的空值(按需选择)
    cleaned_row = [cell for cell in row if cell is not None]
    two_d_array.append(cleaned_row)

print(two_d_array)  # 直接得到Python原生二维列表

小提示

  • 别再用as_matrix()啦,pandas 0.23.0版本之后就弃用这个方法了,to_numpy()是官方推荐的替代方案。
  • 如果你的Excel有表头,记得去掉header=None参数,或者根据需求调整读取逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:34:40