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

for循环中向Pandas DataFrame添加行后返回index:value格式字典的问题

问题根源

你对筛选得到的单行DataFrame直接调用to_dict()时,默认的返回格式为{列名: {行索引: 值}},每个列对应的内容都是带原行索引的字典,这类字典存入列表后生成新DataFrame时,会直接作为单元格值存储,就会出现你看到的{索引:值}格式异常。
另外你的代码还存在一处笔误:pd.Dataframe.from.dict的正确写法为pd.DataFrame.from_dict。

解决方法

方案1:修改现有循环写法

你只需要在筛选到匹配行后,先取第一个行转为Series,再转字典即可:

for id in list_Ids:
    match_df = df[df['ID'] == id]
    # 先判断是否存在匹配行,避免取数报错
    if not match_df.empty:
        # iloc[0]取第一行转为Series,再转字典得到{列名:值}的结构
        list_of_products.append(match_df.iloc[0].to_dict())

report = pd.DataFrame.from_dict(list_of_products)

方案2:更高效的无循环实现(推荐)

Pandas内置的isin方法可以直接批量筛选ID在目标列表中的所有行,完全不需要写循环,数据量越大性能优势越明显:

# 直接筛选所有ID在list_Ids中的行,reset_index可以重置索引去掉原表的行号
report = df[df['ID'].isin(list_Ids)].reset_index(drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:27:02