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

如何用Pandas提取commissionAmount列中的数值以实现透视表求和?

提取字典列数值并实现求和的解决方案

针对你遇到的commissionAmount列是字典格式的问题,这里有几种简单直接的处理方法:

  • 方法一:用Pandas的str.get()快速提取值
    这是最简洁的方式,适合列中大部分元素都是字典的情况:

    # 从字典列中提取amount字段,生成新的数值列
    df['commission_amount'] = df['commissionAmount'].str.get('amount')
    
    # 之后就可以正常创建透视表求和了
    summary_pivot = df.pivot_table(
        values='commission_amount',
        index='你的分组列名称',  # 替换成你实际需要分组的列
        aggfunc='sum'
    )
    
  • 方法二:用apply()做自定义提取(兼容非字典元素)
    如果列里存在空值或非字典格式的元素,可以加个类型判断避免报错:

    # 提取amount,遇到非字典元素返回None
    df['commission_amount'] = df['commissionAmount'].apply(
        lambda x: x['amount'] if isinstance(x, dict) else None
    )
    
    # 可选:删除空值行(如果需要)
    df = df.dropna(subset=['commission_amount'])
    
    # 创建透视表
    summary_pivot = df.pivot_table(values='commission_amount', index='分组列', aggfunc='sum')
    
  • 方法三:用json_normalize()展开字典列
    如果需要同时保留currency字段,这种方法可以把字典直接拆成多列:

    from pandas import json_normalize
    
    # 展开字典列成单独的amount和currency列
    dict_cols = json_normalize(df['commissionAmount'])
    # 和原表合并
    df = pd.concat([df, dict_cols], axis=1)
    
    # 用展开后的amount列做透视表
    summary_pivot = df.pivot_table(values='amount', index='分组列', aggfunc='sum')
    

处理完之后,新生成的数值列就可以正常用于求和、透视表等操作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:05:36