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

Pandas DataFrame增删行列后存CSV异常:新增列未写入

解决方法

你的代码逻辑本身没问题,但可能因操作顺序的直观性不足或Pandas的副本机制细节,导致新增列未被正确保存。可以通过以下两种方式修改代码,确保新增列被写入CSV:

方法一:调整操作顺序(更直观)

先删除不需要的列,再给处理后的DataFrame新增列,最后保存。每一步的修改都清晰可见:

import pandas as pd
df = pd.read_csv('TradedInstrument_20230331_real.txt',  sep='\t', encoding='unicode_escape')

cols_to_drop = ['stopTrdgAllag', 'stopTrdgsAllowTrdg', 'stopTrdleInTrdg', 'presholdChf', 'billentCode', 'preTradeBsholdChf', 'billinntDesc']

# 删除指定列并覆盖原DataFrame
df = df.drop(columns=cols_to_drop)
# 直接赋值字符串'e',Pandas会自动将其应用到所有行,无需手动生成列表
df['new_col'] = 'e'

df.to_csv('output.csv', index=False)

方法二:链式调用整合操作

如果想保留原有操作逻辑,也可以把新增列的操作整合到链式调用中,避免中间变量的混淆:

import pandas as pd
df = pd.read_csv('TradedInstrument_20230331_real.txt',  sep='\t', encoding='unicode_escape')

cols_to_drop = ['stopTrdgAllag', 'stopTrdgsAllowTrdg', 'stopTrdleInTrdg', 'presholdChf', 'billentCode', 'preTradeBsholdChf', 'billinntDesc']

# 链式执行:删列 → 新增列 → 保存
df.drop(columns=cols_to_drop).assign(new_col='e').to_csv('output.csv', index=False)

额外提示

  • 无需手动生成['e'] * len(df.index)这类列表,直接给列赋值单个字符串'e'即可,Pandas会自动将其广播到所有行,代码更简洁高效。
  • 如果原代码中新增列未生效,可以在df.drop(...)之前打印df.columns,确认new_col已被添加到DataFrame中,排查是否存在列名拼写错误或文件读取异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:47:44