Python 用列表中的项目填充数据框

Python 用列表中的项目填充数据框,python,python-3.x,pandas,Python,Python 3.x,Pandas,我正在为幻想足球建立一个预测模型。我用BeautifulSoup抓取了一个网站,将数据解析成列表,创建了一个数据框,并用适当的列表填充了两列。解析代码如下所示: stats = [] team_list = [] vs_list = [] for idx in range(len(parsed_stats)): try: stats.append(float(parsed_stats[idx][0])) except: if len(parsed_

我正在为幻想足球建立一个预测模型。我用BeautifulSoup抓取了一个网站,将数据解析成列表,创建了一个数据框,并用适当的列表填充了两列。解析代码如下所示:

stats = []
team_list = []
vs_list = []
for idx in range(len(parsed_stats)):
    try:
        stats.append(float(parsed_stats[idx][0]))
    except:
        if len(parsed_stats[idx]) > 1:
            team_list.append(parsed_stats[idx][4])
            vs_list.append(parsed_stats[idx+1][0].replace('@', ''))

qb.team, qb.vs = team_list, vs_list
player_id   name    team    vs  ffpts   patt    pcmp    pyds    ptds    pint    p2  ratt    ryds    rtds    r2  fum td
0   1   Matt Ryan   Atl KC  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
1   2   Tony Romo   Dal NYG 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2   3   Robert Griffin III  Griffin,    NO  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
3   4   Drew Brees  NO  Was 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
4   5   Mark Sanchez    NYJ Buf 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
我有38行需要填充,因此现在我的数据帧头部如下所示:

stats = []
team_list = []
vs_list = []
for idx in range(len(parsed_stats)):
    try:
        stats.append(float(parsed_stats[idx][0]))
    except:
        if len(parsed_stats[idx]) > 1:
            team_list.append(parsed_stats[idx][4])
            vs_list.append(parsed_stats[idx+1][0].replace('@', ''))

qb.team, qb.vs = team_list, vs_list
player_id   name    team    vs  ffpts   patt    pcmp    pyds    ptds    pint    p2  ratt    ryds    rtds    r2  fum td
0   1   Matt Ryan   Atl KC  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
1   2   Tony Romo   Dal NYG 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2   3   Robert Griffin III  Griffin,    NO  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
3   4   Drew Brees  NO  Was 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
4   5   Mark Sanchez    NYJ Buf 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
零需要用stats列表中的项目中的数据填充。我为索引正确的嵌套循环编写了以下代码:

for idx,row in enumerate(qb.values):
    count = 4
    while count < 17:
        for val in stats:
            qb.iloc[idx,count] = val
        count +=1
对于idx,枚举中的行(qb.值):
计数=4
当计数小于17时:
对于统计中的val:
qb.iloc[idx,count]=val
计数+=1
循环指向右侧单元格,但用零填充整个数据帧,而不是统计项。已解析的_stats列表和其余代码位于我的git hub上:
有什么想法吗?

在创建初始数据帧之前,我将上一列的名称更改为
vs_2
,因为您已经有了一个名为
vs
的列。在此之后,以下措施似乎奏效:

remaining_columns = columns[4:]
for num, col in enumerate(remaining_columns, start=2):
    print(num, col)
    # Flatten the list and assign it to the relevant column
    flat_list = [item for sublist in parsed_stats[num:][::19] for item in sublist]
    qb[col] = flat_list
qb.iloc[0]
玩家识别码1 我叫马特·瑞安 Atl队 vs KC ffpts 37.00 通过附件31 合格证23 通行证号码299 通过tds 3 整数0 密码20 冲锋队3号 拉什码25 冲锋队tds 1 拉什2 0 记录0 记录码0 记录tds 0 记录2 0 烟0 vs_2 0 名称:0,数据类型:对象
请仔细检查所有内容的顺序是否正确,数字是否合理,我对美式足球不够熟悉,无法对其进行评估。

在创建初始数据框之前,我已将上一列的名称更改为
vs_2
,因为您已经有了一个名为
vs
的列。在此之后,以下措施似乎奏效:

remaining_columns = columns[4:]
for num, col in enumerate(remaining_columns, start=2):
    print(num, col)
    # Flatten the list and assign it to the relevant column
    flat_list = [item for sublist in parsed_stats[num:][::19] for item in sublist]
    qb[col] = flat_list
qb.iloc[0]
玩家识别码1 我叫马特·瑞安 Atl队 vs KC ffpts 37.00 通过附件31 合格证23 通行证号码299 通过tds 3 整数0 密码20 冲锋队3号 拉什码25 冲锋队tds 1 拉什2 0 记录0 记录码0 记录tds 0 记录2 0 烟0 vs_2 0 名称:0,数据类型:对象
请仔细检查每件事的顺序是否正确,数字是否合理,我对美式足球不够熟悉,无法对其进行评估。

只是给出反馈,我不知道分析的统计数据是什么。我希望你能提供这个,这样我们就可以实验了。我无法解析您的数据帧。。。。这相当于我必须努力帮助你。谢谢你的反馈。我编辑了我的帖子,加入了我的git hub。你可以在那里找到它。再次感谢。只是提供反馈,我不知道什么是
parsed_stats
。我希望你能提供这个,这样我们就可以实验了。我无法解析您的数据帧。。。。这相当于我必须努力帮助你。谢谢你的反馈。我编辑了我的帖子,加入了我的git hub。你可以在那里找到它。再次感谢。