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

pandas导出csv时shop_ids列合并、user_id前导零丢失如何解决

pandas导出CSV字段格式异常解决方法

问题原因

你遇到的两个异常(user_id前导0丢失、shop_ids被拆分为带千分位的大数字)并非pandas导出逻辑出错,而是Excel、Numbers等表格软件打开CSV时默认将纯数字串识别为数值类型,自动做了格式化处理。你可以用记事本、VS Code等文本编辑器直接打开导出的CSV验证,原始导出内容其实已经符合你的预期。

解决方法

场景1:保持shop_ids为单列导出

先将两列转为字符串类型,导出时强制所有字段用双引号包裹,避免表格软件自动识别为数值:

import csv
import pandas as pd

# 强制转换字段为字符串类型
df['user_id'] = df['user_id'].astype(str)
df['shop_ids'] = df['shop_ids'].astype(str)

# 导出CSV
df.to_csv(
    'users_ordered_shops.csv',
    index=False, # 不导出索引列
    quoting=csv.QUOTE_ALL, # 所有字段用双引号包裹,强制表格软件识别为文本
    encoding='utf-8-sig' # 适配Excel的编码识别,避免乱码
)

场景2:将shop_ids拆分为多列导出

如果需要把逗号分隔的shop_ids拆成独立列存储,可以用以下代码:

import csv
import pandas as pd

# 转换user_id为字符串
df['user_id'] = df['user_id'].astype(str)
# 拆分shop_ids为多列
shop_cols = df['shop_ids'].str.split(',', expand=True)
# 重命名拆分后的列
shop_cols.columns = [f'shop_id_{i+1}' for i in range(shop_cols.shape[1])]
# 合并为新表
result_df = pd.concat([df[['user_id']], shop_cols], axis=1)

# 导出CSV
result_df.to_csv(
    'users_ordered_shops_expand.csv',
    index=False,
    quoting=csv.QUOTE_ALL,
    encoding='utf-8-sig'
)

验证建议

导出后优先用文本编辑器打开确认内容正确性。如果需要用Excel编辑,不要直接双击打开CSV,而是通过Excel的「数据 > 自文本/CSV」功能导入,导入过程中将user_id、shop_id相关列的格式指定为「文本」即可完全避免自动格式化问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:48:04