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

如何从Transaction类实例创建指定列的Pandas DataFrame?

从自定义Transaction类实例创建Pandas DataFrame的正确方法

首先先修正你代码里的几个问题:

  1. 类定义名称是Transactions,但实例化时用了Transaction,名称不统一,需改成一致(比如统一为Transaction)
  2. add_money类方法的参数用了self,会和实例的self冲突,建议改为transaction
  3. 类属性amount和实例属性amount重名,容易混淆,改为total_amount更清晰

修正后的类代码:

class Transaction:
    num_of_transactions = 0
    total_amount = 0
    # 新增类属性存储所有交易实例,方便后续批量处理
    all_transactions = []

    def __init__(self, date, concept, amount):
        self.date = date
        self.concept = concept
        self.amount = amount
        Transaction.add_transaction()
        Transaction.add_money(self)
        Transaction.all_transactions.append(self)

    @classmethod
    def number_of_transactions(cls):
        return cls.num_of_transactions

    @classmethod
    def add_transaction(cls):
        cls.num_of_transactions += 1

    @classmethod
    def total_amount_of_money(cls):
        return cls.total_amount

    @classmethod
    def add_money(cls, transaction):
        cls.total_amount += transaction.amount

# 实例化交易对象
t1 = Transaction("20221128", "C1", 14)
t2 = Transaction("20221129", "C2", 30)
t3 = Transaction("20221130", "C3", 14)

接下来介绍两种创建符合要求的DataFrame的方法:

方法一:手动收集实例属性生成DataFrame

直接提取每个实例的date、concept、amount属性,构造字典传入pd.DataFrame:

import pandas as pd

data = [
    {"Date": t1.date, "Concept": t1.concept, "Amount": t1.amount},
    {"Date": t2.date, "Concept": t2.concept, "Amount": t2.amount},
    {"Date": t3.date, "Concept": t3.concept, "Amount": t3.amount}
]

df = pd.DataFrame(data)
print(df)

方法二:通过类的统一列表自动生成DataFrame

利用类里新增的all_transactions属性,批量提取所有实例的属性,适合后续新增交易实例的场景:

import pandas as pd

data = [
    {"Date": trans.date, "Concept": trans.concept, "Amount": trans.amount}
    for trans in Transaction.all_transactions
]

df = pd.DataFrame(data)
print(df)

两种方法最终都会生成包含Date、Concept、Amount三列的DataFrame,输出结果如下:

Date Concept  Amount
0  20221128      C1      14
1  20221129      C2      30
2  20221130      C3      14

内容的提问来源于stack exchange,提问作者Adrià Martínez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:15:42