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

如何从Pandas DataFrame提取2015-2020年数据生成对象数组?

解决Pandas筛选年份并转换为自定义对象数组的问题

我来一步步给你拆解怎么完成这个需求:

第一步:筛选2015-2020年的数据行

首先我们需要用Pandas的布尔索引来过滤Year列在指定范围内的行。这里要注意用按位与运算符&(不能用Python内置的and,因为我们要对整列做向量化判断):

# 筛选年份在2015到2020之间的行
filtered_df = df[(df['Year'] >= 2015) & (df['Year'] <= 2020)]

第二步:将筛选后的行转换为自定义Object实例

首先确保你的自定义Object类已经正确定义(先把类代码贴出来方便参考):

class Object:
    def __init__(self, year, yield_data, amount, total, ex_date, pay_date):
        self.year = year
        self.yield_data = yield_data
        self.total = total
        self.ex_date = ex_date
        self.pay_date = pay_date
        self.amount = amount

接下来有两种常用方法把DataFrame的行转成对象数组:

方法1:用iterrows()遍历行(直观易懂,适合小数据集)

object_array = []
# 遍历筛选后的每一行,_是索引(我们这里不需要用到)
for _, row in filtered_df.iterrows():
    # 用行数据初始化Object实例
    current_obj = Object(
        year=row['Year'],
        yield_data=row['Yield'],
        amount=row['Amount'],
        total=row['Total'],
        ex_date=row['ExDate'],
        pay_date=row['PayDate']
    )
    object_array.append(current_obj)

方法2:用apply()方法(更简洁的向量化写法)

# 对每一行应用lambda函数,生成Object实例,最后转成列表
object_array = filtered_df.apply(
    lambda row: Object(
        year=row['Year'],
        yield_data=row['Yield'],
        amount=row['Amount'],
        total=row['Total'],
        ex_date=row['ExDate'],
        pay_date=row['PayDate']
    ),
    axis=1  # axis=1表示按行处理
).tolist()

这样object_array就是你想要的,由2015-2020年数据转换而来的Object实例数组了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 14:02:47