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

Python Pandas如何按资产类型分组统计持仓量并输出汇总结果

解答

完全可以仅使用Pandas原生功能实现该需求,无需引入第三方依赖。

实现步骤

  • 第一步:转换字段类型
    从JSON字段提取的size列默认可能为字符串格式,先转为数值类型避免求和计算出错:
    import pandas as pd
    # 转换size列为数值类型,异常值转为空值
    positions['size'] = pd.to_numeric(positions['size'], errors='coerce')
    
  • 第二步:按资产分组计算持仓总规模
    用groupby按资产类型分组,对size字段求和即可得到各资产总持仓:
    total_holdings = positions.groupby('asset')['size'].sum()
    
  • 第三步:将统计结果追加到原表末尾
    构造和原表列结构对齐的统计行,通过concat拼接到原表末尾即可,统计标识放在id列,总持仓值填入size列,其余业务字段留空:
    # 构造待追加的统计行
    stat_rows = []
    for asset, total_size in total_holdings.items():
        empty_row = {col: None for col in positions.columns}
        empty_row['id'] = f'Total {asset}:'
        empty_row['size'] = total_size
        stat_rows.append(empty_row)
    
    # 拼接得到带统计行的最终表
    positions_with_stat = pd.concat(
        [positions, pd.DataFrame(stat_rows)],
        ignore_index=True
    )
    
    执行后得到的表末尾会自动生成你需要的统计结果:ETH总持仓为5.844,BTC总持仓为0.9549,和预期输出完全一致。

如果不需要把统计行写入DataFrame,仅需要打印输出时在表格末尾展示统计值,直接在打印原表后循环输出统计结果即可:

print(positions)
for asset, total_size in total_holdings.items():
    print(f'Total {asset}: {total_size}')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:30:39