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

遍历DataFrame并更新字典:统计出现次数及更新属性

DataFrame转含最新属性与计数的字典解决方案

原始数据结构

import pandas as pd
df=pd.DataFrame({'Name':['A','B','C','A'],
               'ID':['a1','b1','c1','a1'],
              'Age':[15,16,32,18]})

期望输出字典

dic={'Name':['A','B','C'],
'ID':['a1','b1','c1'],
'Age':[18,16,32],
'Count':[2,1,1]}

需求要点

  • 统计每个Name的出现次数,新增Count字段
  • 每个Name对应的Age保留最后一次出现的最新值(比如'A'的Age更新为最后一次的18)
  • ID保留每个Name对应的唯一值

你尝试的代码(仅实现计数,未处理其他属性)

dic={}

for i in list(df['Security Name']):
  if i not in dic['Name']:
      dic[i]=1
   else:
      dic[i]+=1

两种可行解决方案

方案一:用pandas分组实现(高效推荐)

利用groupby直接完成分组统计、取最新值的操作,再转为目标字典:

import pandas as pd

# 分组聚合:取ID(唯一值用first/last都可)、最后一次的Age、统计数量
grouped_result = df.groupby('Name').agg(
    ID=('ID', 'first'),
    Age=('Age', 'last'),
    Count=('Name', 'size')
).reset_index()

# 转换为目标字典格式
dic = grouped_result.to_dict('list')
print(dic)

运行后输出完全符合期望。

方案二:手动遍历实现(贴合你的初始思路)

通过临时字典存储每个Name的详细信息,遍历过程中更新计数和最新Age,最后整理成目标格式:

import pandas as pd

df=pd.DataFrame({'Name':['A','B','C','A'],
               'ID':['a1','b1','c1','a1'],
              'Age':[15,16,32,18]})

temp_store = {}
# 逐行遍历处理
for _, row in df.iterrows():
    name = row['Name']
    if name not in temp_store:
        # 首次出现时初始化信息
        temp_store[name] = {
            'ID': row['ID'],
            'Age': row['Age'],
            'Count': 1
        }
    else:
        # 重复出现时更新计数和最新Age
        temp_store[name]['Count'] += 1
        temp_store[name]['Age'] = row['Age']

# 整理成目标字典结构
dic = {
    'Name': list(temp_store.keys()),
    'ID': [val['ID'] for val in temp_store.values()],
    'Age': [val['Age'] for val in temp_store.values()],
    'Count': [val['Count'] for val in temp_store.values()]
}
print(dic)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:57:15