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

Python如何用for循环将Pandas DataFrame值写入自定义类属性

问题原因与解决方法

核心错误原因

  • 你在执行newMessage=Message()时已经自动调用了类的__init__初始化方法,该方法要求传入time/id/type/source/destination共5个必填参数,你未传入任何参数,直接触发了参数缺失异常。
  • __init__是类实例化过程中自动执行的方法,不需要你在后续手动调用。
  • 你的业务逻辑是要为DataFrame的每一行生成一个独立的Message实例,不应该在循环外只创建一个实例反复修改。
  • 额外注意:你代码中取DataFrame行值的键名大小写不统一,比如传入参数用row['id']、print语句用row['ID'],参数匹配错误会后续触发KeyError,需要和你DataFrame实际的列名完全保持一致。
  • 补充:你贴出的Message类定义存在缩进错误,__init__方法需要缩进在类内部,否则Python会将其识别为独立函数。

正确实现代码

如果需要把每行对应的Message实例存储下来,可以用列表收纳所有实例,示例代码如下:

class Message:
    def __init__(self, time, id, type, source, destination):
        self.time = time
        self.id = id
        self.type = type
        self.source = source
        self.destination = destination

# 遍历DataFrame生成实例
message_list = []
# 注意此处row取键的名称要和你DataFrame的列名完全一致,包括大小写
for index, row in df.iterrows():
    # 实例化时直接传入参数,自动调用__init__完成初始化
    new_message = Message(
        time=row['time'],
        id=row['id'],
        type=row['type'],
        source=row['source'],
        destination=row['destination']
    )
    message_list.append(new_message)
    # 打印时键名也要和实际列名一致
    print(row['time'], row['id'], row['type'], row['source'], row['destination'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:54:02