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

如何用Python生成账户交易汇总列表并优化输出格式

问题描述

现有一段Python代码可正常运行,但需要对输出做汇总排序以提升可读性,核心需求是按账户汇总交易次数、计算交易总额,将当前的明细输出转换为指定的汇总格式。

原代码:

account = []
amount = []

pmtReceived = []
for payment in payments_received: 
    print ("  ({:>15}) <-  {}".format(payment['amount'] ,payment['from']))
    pmtReceived.append(payment['amount'])

    account.append(payment['to'])
    amount.append(payment['amount'])

    df = pd.DataFrame(list(zip(lst1, lst2)), columns =['To', 'Amount'])

print (df)

当前输出:

Account      Amount       
0  BD001ABC... 180.0000000 
1  ACC011XY... 120.0000000
2  ACC011XY... 444.0000000  
3  012ABC1A... 190.0000000
4  012ABC1A...  50.0000000
5  012ABC1A... 110.0000000
6  012ABC1A... 400.0000000  
7  XY123AYT...   0.4900000

期望输出:

BD001ABC (1 Transaction / 180.0)
ACC011XY (2 Transaction / 564.0)
012ABC1A (4 Transaction / 750.0)
XY123AYT (1 Transaction / 0.49)
解决方案

直接利用Pandas的groupby功能就能快速实现汇总需求,修改后的代码如下:

import pandas as pd

# 修正原代码的变量错误,将收集到的账户和金额数据存入DataFrame
df = pd.DataFrame({
    'Account': account,
    'Amount': amount
})

# 按账户分组,统计交易次数与总额
summary_df = df.groupby('Account').agg(
    交易次数=('Amount', 'count'),
    交易总额=('Amount', 'sum')
).reset_index()

# 格式化输出为期望样式
for _, row in summary_df.iterrows():
    # 处理账户名中的省略号,提取完整前缀
    account_prefix = row['Account'].split('...')[0]
    # 按需求格式打印
    print(f"{account_prefix} ({row['交易次数']} Transaction / {row['交易总额']})")

关键说明:

  • 原代码中lst1、lst2应为account和amount,已修正该变量错误;
  • 使用groupby('Account')按账户分组,通过agg方法一次性完成交易次数(count)和总额(sum)的统计;
  • 遍历汇总结果时,处理了账户名的省略号格式,确保输出和示例一致;若原数据无省略号,直接使用row['Account']即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:50:17