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

基于Pandas实现DataFrame对比与数据更新合并的解决方案咨询

解决方案:更新版本计数的Pandas实现

当然有完美的解决方案!我来给你一步步拆解怎么实现这个需求:

核心思路

我们可以把新数据先统一加上初始计数1,再和原有汇总数据合并,最后按版本分组求和——这样既可以自动处理“已有版本计数+1”,又能把新出现的版本以计数1加入汇总。

简洁版代码实现

import pandas as pd

# 初始化原始数据
datanew = [{"version": "Adobe 1.0.2"}, {"version": "Microsoft 1.3.27"}, {"version": "Test 0.0.2"}]
datasum = [{"version": "Adobe 1.0.2","number" : 1}, {"version": "Microsoft 1.3.27", "number" : 2}]

# 转换为Pandas DataFrame
df_new = pd.DataFrame(datanew)
df_sum = pd.DataFrame(datasum)

# 给新数据添加计数列,所有新版本初始计数为1
df_new['number'] = 1

# 合并两个数据集,按版本分组求和
combined_df = pd.concat([df_sum, df_new]).groupby('version', as_index=False)['number'].sum()

# 转换回你需要的字典列表格式
datasum_updated = combined_df.to_dict('records')

# 输出结果
print(datasum_updated)

代码解释

  • pd.concat([df_sum, df_new]):把原有汇总数据和带初始计数的新数据合并成一个大的数据集,所有版本记录都被包含进来
  • groupby('version', as_index=False)['number'].sum():按version列分组,自动把相同版本的计数相加——正好对应“已有版本计数+1”的需求;新出现的版本因为只有初始的1,求和后就是1
  • to_dict('records'):把处理后的DataFrame转换回你需要的字典列表格式,和原始数据结构完全一致

运行这段代码后,你会得到期望的结果:

[{"version": "Adobe 1.0.2","number": 2}, {"version": "Microsoft 1.3.27", "number": 3}, {"version": "Test 0.0.2","number": 1}]

另一种实现方式(合并匹配法)

如果你更倾向于用匹配的方式处理,也可以用外连接的方法:

import pandas as pd

datanew = [{"version": "Adobe 1.0.2"}, {"version": "Microsoft 1.3.27"}, {"version": "Test 0.0.2"}]
datasum = [{"version": "Adobe 1.0.2","number" : 1}, {"version": "Microsoft 1.3.27", "number" : 2}]

df_new = pd.DataFrame(datanew)
df_sum = pd.DataFrame(datasum)
df_new['number'] = 1

# 外连接两个数据集,匹配相同版本
merged = df_sum.merge(df_new, on='version', how='outer', suffixes=('_sum', '_new'))
# 处理空值,把原有计数和新计数相加,空值用0填充
merged['number'] = merged['number_sum'].fillna(0) + merged['number_new'].fillna(0)
# 保留需要的列并转换计数为整数
merged = merged[['version', 'number']].astype({'number': int})

datasum_updated = merged.to_dict('records')

这个方法的逻辑是先匹配相同版本,再把对应计数相加,结果和简洁版完全一致,适合喜欢分步处理的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 09:09:05