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

Python Pandas导入Excel:去除列表类单元格值的多余引号

解决Pandas读取Excel后部分单元格值带多余引号的问题

问题场景

将Excel数据导入DataFrame后,整体显示正常,但查询单个单元格时,analysis_duration这类形似列表的单元格值会被包裹在单引号中,需要去除这些多余引号;而字符串类型值的引号属于正常现象,无需处理。

原始Excel数据(已翻译英文内容)

parameter               customer1                   
analysis                1
analysis_name           月度服务分析
analysis_duration       [2022-08-23, 2022-11-02]
analysis_numcheck       1
analysis_dupcolumns     1

当前问题输出

c1df = pd.read_excel('customer1_data.xlsx')
c1df.set_index('parameter',inplace=True)

print(c1df.loc['analysis'])
# 输出:1

print(c1df.loc['analysis_duration'])
# 输出:'[2022-08-23, 2022-11-02]'(存在多余引号)

print(c1df.loc['analysis_name'])
# 输出:'月度服务分析'(字符串引号正常)

解决方案

问题根源是Excel中[xxx, xxx]格式的内容被Pandas识别为字符串类型,打印时会自动添加单引号。可以用ast.literal_eval将字符串解析为对应的Python列表对象。

方法一:读取后单独处理目标行

import pandas as pd
import ast

# 读取数据并设置索引
c1df = pd.read_excel('customer1_data.xlsx')
c1df.set_index('parameter', inplace=True)

# 解析analysis_duration对应的字符串为列表
c1df.loc['analysis_duration', 'customer1'] = ast.literal_eval(c1df.loc['analysis_duration', 'customer1'])

# 验证结果
print(c1df.loc['analysis'])
# 输出:1

print(c1df.loc['analysis_duration'])
# 输出:[2022-08-23, 2022-11-02]

print(c1df.loc['analysis_name'])
# 输出:'月度服务分析'

方法二:读取时批量处理(推荐)

如果存在多个类似格式的单元格,可自定义转换器,在读取Excel阶段自动解析:

import pandas as pd
import ast

def parse_list_string(value):
    # 判断是否为符合列表格式的字符串
    if isinstance(value, str) and value.startswith('[') and value.endswith(']'):
        return ast.literal_eval(value)
    return value

# 读取时指定转换器处理customer1列
c1df = pd.read_excel('customer1_data.xlsx', converters={'customer1': parse_list_string})
c1df.set_index('parameter', inplace=True)

# 验证结果
print(c1df.loc['analysis_duration'])
# 输出:[2022-08-23, 2022-11-02]

说明

  • ast.literal_eval是安全的解析工具,仅能解析合法的Python字面量(列表、字典、元组等),不会执行恶意代码。
  • 字符串类型的值打印时带单引号是Python的默认行为,属于正常现象,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:01:17