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

遍历DataFrame生成文本文件:Series对象无ljust属性的问题求助

问题分析与解决方案

问题根源

  1. __str__方法逻辑错误:原代码的__str__方法在循环中每次迭代就直接return,只会返回第一个字段的格式化结果,无法完成所有字段的拼接。
  2. 属性类型不匹配:当直接将整个dental_df['Agreement_Number'](pandas Series对象)赋值给r.Agreement_Number时,后续调用ljust()会报错——因为ljust()是字符串专属方法,Series对象没有该属性。

修正代码

第一步:修复Reporting_Information类的__str__方法

class Reporting_Information:
    """ ES0388F4  UCCI 130 Record (Reporting Information) """

    fields = (
        ('Agreement_Number',13),
        ("Contract_ID",27),
        ('Record_Identifier',3),
        ('Sequence_Number',7),
        ('Report_Count',2),
        ('Report_Qualifier_Code',2),
        ('Report_Qualifier',0),
        ('Effective_Date',10),
        ('Report_ID',30),
        ('Report_Qualifier2',10),
        ('Cancel_Date',0),
        ('Filler',396)
    )

    def __init__(self):
        self.Agreement_Number =''
        self.Contract_ID =''
        self.Record_Identifier ='130'
        self.Sequence_Number ='0'
        self.Report_Count ='01'
        self.Report_Qualifier_Code='LU'
        self.Report_Qualifier =''
        self.Effective_Date =''
        self.Report_ID =''
        self.Report_Qualifier2 =''
        self.Cancel_Date = ''
        self.Filler =''

    def __str__(self):
        # 收集所有字段的格式化结果后再拼接返回
        formatted_fields = []
        for field_name, width in self.fields:
            field_value = getattr(self, field_name)
            # 强制转为字符串,避免非字符串值调用ljust报错
            formatted_field = str(field_value).ljust(width)
            formatted_fields.append(formatted_field)
        return ''.join(formatted_fields)

第二步:批量生成多行协议编号条目

# 遍历DataFrame的Agreement_Number列,生成每个编号对应的格式化记录
report_records = []
for agreement_num in dental_df['Agreement_Number']:
    r = Reporting_Information()
    r.Agreement_Number = agreement_num
    # 可根据业务需求补充设置其他字段(如Contract_ID、Effective_Date等)
    report_records.append(str(r))

# 打印所有生成的记录
for record in report_records:
    print(record)

关键说明

  • 修复后的__str__方法会遍历所有字段,将每个字段值转为字符串后调用ljust(),最终拼接成完整的记录字符串。
  • 通过循环遍历DataFrame的Agreement_Number列,为每个编号创建独立的类实例,确保每个实例的Agreement_Number都是单个字符串值,彻底避免类型不匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:05:53