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

非循环暴力方式:将字典列表中符合列值条件的项添加至DataFrame

嘿,这个需求我之前也碰到过,完全不用写循环暴力处理,用pandas的内置方法就能高效搞定,步骤很清晰:

具体实现步骤

  1. 把字典列表转换成临时DataFrame
    先把lod这个字典列表转成pandas的DataFrame,这样就能利用pandas的向量化操作来处理,避免低效的循环:

    import pandas as pd
    
    temp_df = pd.DataFrame(lod)
    
  2. 筛选符合条件的行
    用isin()方法快速筛选出临时DataFrame中C列值存在于原df的C列中的行——这一步是核心,完全是向量化操作,比循环快N倍:

    filtered_rows = temp_df[temp_df['C'].isin(df['C'])]
    
  3. 合并到原DataFrame
    最后把筛选后的结果合并到原df里,记得加上ignore_index=True来重置索引,避免索引混乱:

    df = pd.concat([df, filtered_rows], ignore_index=True)
    

举个例子验证

假设原df是这样的:

df = pd.DataFrame({'A': [False, True], 'B': [3, 4], 'C': [23.0, 25.0]})
lod = [{'A': True, 'B':2, 'C':23}, {'A': True, 'B':1, 'C':24}]

按照上面的步骤处理后,df会新增第一行字典的数据,第二行因为C=24不在原df的C列里,会被过滤掉,完全符合你的需求。

这种方法的优势在于完全利用了pandas的向量化运算,数据量越大,和循环暴力处理的效率差距就越明显,而且代码简洁易读,维护起来也方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:44:53