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

DataFrame转固定宽度文件出错,求问题排查方法

问题描述

我在读取固定宽度文本文件并加载到DataFrame,之后调整列顺序生成固定宽度格式文件时出现问题,请求排查错误原因。

代码示例

# 从目标目录读取文件
for file in fileNames:
    if file.is_file():
        print(file.name)

# 读取固定宽度文件
transfile = pd.read_fwf(file , skiprows=1, skipfooter=1, header=None, converters={0:str, 1:str}, keep_default_na=False,
widths=[
12,#ID 索引1
12,#SURNAME 索引2
7,#FIRSTNAME 索引3
1,#MIDDLEINITIAL 索引4
1,#GENDER 索引5
8,#BIRTHDATE 索引6
1,#占位符 索引7....

# 创建DataFrame对象
df = pd.DataFrame(columns=[
'recordType', 'ID','SURNAME','FIRSTNAME'...

# 按列填充至固定宽度
df['DI']=tc61[0]
df['SURNAME']=tc61[1]
df['FIRSTNAME']=tc61[2]
df['MIDDLEINITIAL']=tc61[3]
df['GENDER']=tc61[4]
df['ID']=df['ID'].str.ljust(12," ").replace(np.nan, ' ')
df['SURNAME']=df['SURNAME'].str.ljust(12," ").replace(np.nan, ' ')
df['FIRSTNAME']=df['FIRSTNAME'].str.ljust(7," ").replace(np.nan, ' ')
df['MIDDLEINITIAL']=df['MIDDLEINITIAL'].str.ljust(1," ").replace(np.nan, ' ')
# 合并所有列
fixedWidthFile = order[order.columns[0:]].apply(lambda x:''.join(x.dropna().astype(str)),axis=1)
# 写入文本文件
file = open("file.txt", "w+")
content = str(fixedWidthFile)
file.write(content)
file.close()
file = open("file.txt", "r")
content = file.read()
print("\nfile.txt内容:\n", content)
file.close()

错误排查点

  • 未定义变量引用:代码中使用了tc61和order两个未定义的变量,推测tc61应为读取后的transfile,order应为创建的目标DataFramedf,变量名不匹配会直接抛出NameError。
  • 列名不匹配:创建DataFrame时定义了列recordType,但填充数据时用了df['DI'],列名不一致会导致目标列缺失数据,且产生多余无意义的列DI。
  • 文件读取循环逻辑缺失:遍历文件列表时仅打印文件名,未将每个文件的内容读取并处理,最终只会处理循环最后一个file对象,若要批量处理需在循环内完成读取、转换、写入的完整流程。
  • 字符串处理逻辑错误:调用str.ljust前未处理NaN值,若列存在NaN会抛出AttributeError,正确做法应先填充NaN为空字符串再调用字符串方法,例如df['ID'] = df['ID'].fillna('').str.ljust(12, ' ')。
  • 文件写入格式错误:直接将Series转为字符串写入文件,会包含索引和Series的格式标记(如0 xxxxx\n1 yyyyy),而非纯固定宽度文本行。应使用fixedWidthFile.to_csv('file.txt', index=False, header=False)或循环写入每行内容。
  • read_fwf参数问题:skipfooter参数仅在engine='python'时生效,默认engine为c不支持该参数,会导致无法跳过末尾行;另外widths列表未完整定义,末尾的....会导致宽度数量与实际列数不匹配,引发读取错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:55:32