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

Pandas写入混合分隔数据到CSV时如何让key占单个Excel单元格

修复CSV中字典key被Excel拆分到多单元格的问题

问题原因

CSV格式默认使用逗号作为字段分隔符,直接写入的字符串如果包含逗号、空格等符号,Excel打开时会自动将其拆分到多个单元格。按照CSV标准规则,被半角双引号包裹的内容会被识别为单个字段,内容内部的所有分隔符、空格都会被当作普通文本处理,不会触发拆分。

修复方案

只需要修改写入字典key的代码行,给key外层包裹半角双引号即可,同时要对key本身包含的双引号做转义(CSV中转义双引号的规则是用两个连续的双引号表示一个原义双引号)。

修改后的完整代码如下:

import pandas as pd

df = pd.read_csv('test.batch.csv')
print(df)

# Creating a dictionary
data = {'Value':[0,0,0]}
kernel_df = pd.DataFrame(data, index=['M1','M2','M3'])
my_dict = {'dummy':kernel_df}

for name, df_group in df.groupby('Name'):
    my_dict[name] = pd.concat(
        [g.reset_index(drop=True) for _, g in df_group.groupby('ID')['Value']],
        axis=1
    )

print(my_dict)

with open('output.csv', 'w') as f:
    for key in my_dict.keys():
        # 给key外层包裹双引号,同时转义key内部的双引号
        escaped_key = key.replace('"', '""')
        f.write(f'"{escaped_key}"\n')
        df2 = my_dict[key]
        df2.to_csv(f)

效果验证

修改后输出的CSV纯文本中,key所在行都会被双引号包裹,如下示例:

"dummy"
,Value
M1,0
M2,0
M3,0
"K1::foo(bar::z(x,u))"
,Value,Value
0,10,2
1,5,2
2,10,2
"K2::foo()"
,Value
0,20
1,10
2,15

Excel打开时,所有key都会完整显示在第一列的单个单元格中,后续表格内容的拆分逻辑不受任何影响。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:06:03