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

Python中按sha1合并DataFrame的方法及报错修复

问题修复方案

报错原因

你直接将列名列表传给aggregate的用法错误。aggregate(或简写agg)需要接收聚合函数映射(字典形式,键为列名,值为对应聚合函数),而非列名列表。当你传入列名列表时,pandas会把每个列名当作函数名去查找,自然找不到Location这类方法,从而抛出AttributeError。

修复代码

根据合并需求,我们需要为不同列指定合适的聚合规则:比如同一sha1下唯一的列(如repository、url)用first取唯一值,其他可能存在多值的列用list合并所有值。示例代码如下:

# 定义各列的聚合规则
agg_rules = {
    'Location': list,
    'filePath': list,
    'startLine': list,
    'endLine': list,
    'startColumn': list,
    'endColumn': list,
    'codeElementType': list,
    'description': list,
    'codeElement': list,
    'repository': 'first',  # 假设同一sha1对应唯一仓库
    'sha1': 'first',        # 分组键保留唯一值即可
    'url': 'first',         # 假设同一sha1对应唯一链接
    'type': list,
    'description.1': list
}

# 按sha1分组并应用聚合规则,as_index=False让sha1作为普通列保留
df_new = df.groupby('sha1', as_index=False).agg(agg_rules)
print(df_new)

可选调整

  • 如果某些列在同一sha1下确实唯一,也可以用last、unique替代first,效果一致
  • 若需要去重后的列表,可自定义聚合函数:lambda x: list(pd.unique(x))(相比set能保留原有顺序)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:01:11