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

如何用Python在CSV中新增列并保持分隔符数量不变?

实现:给DataFrame新增左侧列并保持CSV分隔符数量不变

我们有一个由Python生成的DataFrame,转换为CSV后以|作为分隔符,原CSV包含9个分隔符(对应10列)。

原CSV内容

Date|ID|CD|BIN|INTRNL|PCC|IND|CENTRE|TRANS|ENTITY
20221231|APPLE|10004050|BCH_dummy|3505|N|Y|Y|6310|
20221231|APPLE|10004050|BCH_MOTOR|3502|N|Y|Y|6310|

对应的原DataFrame

Date ID CD BIN INTRNL PCC IND CENTRE TRANS ENTITY
20221231 APPLE 10004050 BCH_dummy 3505 N Y Y 6310
20221231 APPLE 10004050 BCH_MOTOR 3502 N Y Y 6310

需求

要在Date列左侧新增名为BDR2的列,同时保证生成的CSV中分隔符数量仍为9(即最终CSV仍保持10列结构)。预期输出的CSV如下:

BDR2|Date|ID|CD|BIN|INTRNL|PCC|IND|CENTRE|TRANS|ENTITY
20221231|APPLE|10004050|BCH_dummy|3505|N|Y|Y|6310|
20221231|APPLE|10004050|BCH_MOTOR|3502|N|Y|Y|6310|

解决方案代码

# 在最左侧插入空值的BDR2列
df.insert(0, column="BDR2", value='')
# 将所有列向右移位,丢弃原最右侧无数据的ENTITY列
df = df.shift(-1, axis=1)
# 替换移位产生的nan为空字符串
df.replace("nan", '', inplace=True)
# 导出为指定路径的CSV,指定分隔符且不包含索引
df.to_csv(r"C:\INPUT\df_sample_test.csv", sep='|', index=False)

代码说明

  • df.insert(0, column="BDR2", value=''):在DataFrame第0位插入新列BDR2,初始值为空,此时DataFrame临时变为11列
  • df.shift(-1, axis=1):对列执行右移操作,原最右侧的ENTITY列(无有效数据)被丢弃,DataFrame回到10列结构
  • df.replace("nan", '', inplace=True):处理移位后产生的空值标记,替换为空字符串保证格式统一
  • df.to_csv(...):按要求导出CSV文件,使用|作为分隔符,不写入索引列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:20:47