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

Python将数组转换为列表导出Excel时如何去除方括号和引号

问题核心原因

导出Excel带括号和引号的本质是存入DataFrame的每个单元格内容为单元素嵌套列表,而非纯字符串,pandas导出时会将列表直接转为字符串格式,自然会附带[]和''符号。

解决方案

方案1:生成列表时直接打平(推荐)

修改生成c的逻辑,从源头避免生成嵌套列表:

def top_rank(result, md_adj, miRNAs, diseases):
    row, col = result.shape
    rows_list = []

    for i in range(3):
        pidx = np.argsort(-result[:, i])
        sidx = np.argwhere(md_adj[:, i] == 1)
        indices = np.argwhere(np.isin(pidx, sidx))
        index = np.delete(pidx, indices)
        a = diseases[i]
        # miRNA结果压平为一维数组后转列表,和疾病名拼接为一维平列表
        b = miRNAs[index].flatten().tolist()
        c = [a] + b
        rows_list.append(c)


df = pd.DataFrame(rows_list)
df = df.T
# 可加index=False参数去掉导出的默认行号,不需要可删除
df.to_excel('test.xlsx', index=False)

方案2:生成DataFrame后统一处理

如果不想修改原有业务逻辑,可以在导出前批量处理所有单元格的嵌套列表:

def top_rank(result, md_adj, miRNAs, diseases):
    row, col = result.shape
    rows_list = []

    for i in range(3):
        pidx = np.argsort(-result[:, i])
        sidx = np.argwhere(md_adj[:, i] == 1)
        indices = np.argwhere(np.isin(pidx, sidx))
        index = np.delete(pidx, indices)
        a = diseases[i]
        b = miRNAs[index]
        c = np.vstack([a,b]).tolist()
        rows_list.append(c)


df = pd.DataFrame(rows_list)
df = df.T
# 遍历所有单元格,提取单元素列表内的实际值
df = df.applymap(lambda x: x[0] if isinstance(x, list) and len(x) == 1 else x)
df.to_excel('test.xlsx')

两种方案都可以将[['a'], ['b'], ['c']]格式的嵌套列表转为['a','b','c']的平列表,导出Excel后不会再出现多余符号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:36:05