如何将DataFrame指定类别数据存入字典?解决仅存最后一行问题
解决DataFrame筛选Categoria=34行存入字典的问题
给定的DataFrame如下:
Data Código de barras Categoria Marca 2 2022-12-31 590688144812 55 AW0152 3 2022-12-31 No 34 CÂMARA 4 2022-12-31 No 34 CÂMARA FULL
尝试了以下代码,但只能存入最后一行符合条件的数据:
for i,j in tabela_insere.iterrows(): if j["Categoria"] == 34: print(j) dados = [j.to_dict()]
问题原因
每次循环中都执行dados = [j.to_dict()],相当于重新创建一个只包含当前行的列表,之前存入的数据会被覆盖,最终只保留最后一次循环的结果。
解决方法
方法1:循环外初始化空列表,循环内追加数据
在循环开始前先创建一个空列表,每次找到符合条件的行就把该行的字典追加进去:
dados = [] # 提前初始化空列表 for i,j in tabela_insere.iterrows(): if j["Categoria"] == 34: print(j) dados.append(j.to_dict()) # 用append添加行字典到列表
方法2:用pandas矢量化操作(更高效)
避免使用循环,直接通过pandas的筛选功能获取目标行,再转成字典列表,这种方式在数据量较大时效率更高:
# 筛选Categoria等于34的行,再转成字典列表('records'表示每行一个字典) dados = tabela_insere[tabela_insere["Categoria"] == 34].to_dict('records')
内容的提问来源于stack exchange,提问作者Shadow
相关产品推荐
相关产品推荐

