如何用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
相关产品推荐
相关产品推荐

