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

Pandas添加列后输出文件异常问题求助

问题排查与解决方案

看起来你的代码在文件读取、日期提取和列添加环节都存在一些小问题,导致没得到预期输出。咱们一步步梳理修正:

问题点分析

  • 分隔符设置错误:输入文件是逗号分隔的,但你用了sep='\t'(制表符分隔),这会导致Pandas读取数据时格式完全混乱。
  • 日期提取逻辑偏差:日期实际在文件第一行(索引0)的第三个位置,但你用df.iloc[1]取了第二行,且用字符串拆分的方式过于繁琐。
  • 列添加方式不当:apply返回列表会让新列的值带上括号,不符合预期的纯字符串格式。
  • 输出包含冗余索引:默认to_csv会输出DataFrame的索引列,这会让结果多一列不必要的内容。

修正后的完整代码

import pandas as pd

# 1. 提取目标日期:直接读取文件第一行拆分获取
with open('C:/Working/dalal/MTO_11052018.DAT', 'r') as f:
    first_line = f.readline().strip()
trans_dt = first_line.split(',')[2]

# 2. 读取有效数据行:跳过前3行无关内容,用逗号分隔
df2 = pd.read_csv('C:/Working/dalal/MTO_11052018.DAT', sep=',', skiprows=3, header=None)

# 3. 添加日期列:直接批量赋值,无需复杂的apply操作
df2['Trans_dt'] = trans_dt

# 4. 输出文件:去掉索引和表头,完全匹配预期格式
df2.to_csv('C:/Working/dalal/deldata/MTO_11052018.OUT', sep=',', index=False, header=False)

代码说明

  • 日期提取:用原生文件操作直接读取第一行,拆分后拿到目标日期,比用Pandas读取更简洁高效。
  • 数据读取:sep=','正确识别逗号分隔格式,skiprows=3跳过前两行表头信息和第三行列名,header=None避免将列名当作数据行。
  • 列添加:直接给新列赋值日期字符串,Pandas会自动为所有行填充该值,避免了apply带来的列表格式问题。
  • 输出设置:index=False移除默认索引列,header=False不输出列名,完全贴合你想要的预期输出格式。

运行这段代码后,就能得到符合要求的输出文件了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:21:57