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

如何使用Python及Pandas从Excel单元格读取数组(列表)?

读取Excel中混合列表与数字列的方法

当Excel某列同时存在字符串格式的列表(如[1,2,3])和普通数字时,你可以通过以下步骤解析:

1. 读取文件时指定列类型

首先用Pandas读取Excel,将目标列强制以字符串类型加载,避免Pandas自动转换导致格式混乱:

import pandas as pd
import ast

# 替换为你的文件名和目标列名
df = pd.read_excel('data.xlsx', dtype={'target_column': str})

2. 编写解析函数

自定义函数处理每个单元格:判断是否为列表格式字符串,安全解析为Python列表;普通数字则转为数值类型(或单个元素列表,按需选择):

def parse_cell_value(cell):
    if pd.isna(cell):
        return []  # 空值处理,可改为None或其他
    
    # 识别列表格式字符串
    if cell.strip().startswith('[') and cell.strip().endswith(']'):
        try:
            # ast.literal_eval比eval更安全,仅解析Python字面量
            return ast.literal_eval(cell.strip())
        except (SyntaxError, ValueError):
            # 解析失败时返回原内容,或根据需求调整
            return cell
    else:
        # 处理普通数字
        try:
            num = float(cell)
            # 整数转int,小数保留float
            return int(num) if num.is_integer() else num
            # 若需统一为列表格式,替换为:return [num if not num.is_integer() else int(num)]
        except ValueError:
            # 非数字内容返回原值
            return cell

3. 应用解析函数到目标列

通过apply将函数作用于整列:

df['target_column'] = df['target_column'].apply(parse_cell_value)

关键说明

  • 安全解析:用ast.literal_eval替代eval,避免执行字符串中的恶意代码。
  • 格式兼容:如果Excel中的列表有多余空格(如[ 1 , 2 , 3 ]),strip()和ast.literal_eval会自动处理。
  • 统一格式:若需要所有单元格都返回列表,只需在普通数字处理部分返回[num]即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 09:27:20