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

如何从自定义对象列表创建指定列的Pandas DataFrame

解决方案:将自定义对象列表转换为指定列的Pandas DataFrame

你的需求完全可行,问题出在直接将自定义对象列表传入pd.DataFrame.from_records时,Pandas无法自动匹配你需要的属性与目标列名,且对象的属性名和你指定的列名不对应(比如你要fixtureID,但对象里对应的是source_market_id)。

具体实现步骤

核心思路是先遍历对象列表,提取每个对象中与目标列对应的属性值,构造符合要求的字典列表,再转换为DataFrame。同时按你的期望输出处理selectionID的格式(将原source_selection_id的最后三位替换为0):

import pandas as pd

# 遍历对象列表,构造数据字典
data = []
for obj in ddf_list:
    # 处理selectionID格式:截取前n位并补三个0
    processed_selection_id = obj.source_selection_id[:-3] + '000'
    data.append({
        'fixtureID': obj.source_market_id,
        'marketID': obj.source_market_type_id,
        'selectionID': processed_selection_id,
        'competitorID': obj.competitor_id
    })

# 转换为DataFrame
df = pd.DataFrame(data)

也可以用更简洁的列表推导式写法:

df = pd.DataFrame([
    {
        'fixtureID': obj.source_market_id,
        'marketID': obj.source_market_type_id,
        'selectionID': obj.source_selection_id[:-3] + '000',
        'competitorID': obj.competitor_id
    }
    for obj in ddf_list
])

结果验证

执行后得到的DataFrame结构将完全符合你的期望:

fixtureIDmarketIDselectionIDcompetitorID
10160904094510160109040945529460001052946019
10160904094510160109040945526006001052600648
10160904094510160109040945530523001053052373

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:19:01