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

如何移除数组中客户与发票参考相同且金额总和为0的行

问题描述

我有一组包含以下字段的发票数据(已读取到数组中):

  • 客户编号
  • 发票编号(唯一,冲销发票会生成新编号)
  • 发票参考(冲销发票与原发票的参考一致)
  • 金额(冲销时为负数)

需要实现的逻辑:

当同一客户编号+同一发票参考对应的所有行金额总和为0时,删除该组合下的所有行。

原始数据示例

客户发票编号发票参考金额
32339132494191324941143.966
32339132317291323172155.418
32339132317391323172-418
32339133011291324941-143.966

处理后预期结果

客户发票编号发票参考金额
32339132317291323172155.418
32339132317391323172-418

注:需处理约70个客户、4000条发票数据。


解决方案

方法1:使用Python Pandas(高效处理大数据)

Pandas的分组功能可以快速实现需求,代码简洁且性能足够应对4000条数据:

import pandas as pd

# 假设原始数据为列表字典格式(可根据实际数组结构调整)
invoice_data = [
    {"客户": 3233, "发票编号": "91324941", "发票参考": "91324941", "金额": 143.966},
    {"客户": 3233, "发票编号": "91323172", "发票参考": "91323172", "金额": 155.418},
    {"客户": 3233, "发票编号": "91323173", "发票参考": "91323172", "金额": -418},
    {"客户": 3233, "发票编号": "91330112", "发票参考": "91324941", "金额": -143.966}
]

# 转换为DataFrame
df = pd.DataFrame(invoice_data)

# 按客户+发票参考分组,计算每组金额总和
grouped_sum = df.groupby(["客户", "发票参考"])["金额"].transform("sum")

# 过滤出总和不为0的行
filtered_df = df[grouped_sum != 0]

# 转换回数组格式(按需使用)
filtered_data = filtered_df.to_dict("records")

# 输出结果
print(filtered_data)

方法2:纯Python实现(无需第三方库)

如果环境受限无法使用第三方库,可通过字典分组计算总和后过滤数据:

invoice_data = [
    {"客户": 3233, "发票编号": "91324941", "发票参考": "91324941", "金额": 143.966},
    {"客户": 3233, "发票编号": "91323172", "发票参考": "91323172", "金额": 155.418},
    {"客户": 3233, "发票编号": "91323173", "发票参考": "91323172", "金额": -418},
    {"客户": 3233, "发票编号": "91330112", "发票参考": "91324941", "金额": -143.966}
]

# 第一步:计算每个(客户, 发票参考)组合的金额总和
sum_map = {}
for item in invoice_data:
    key = (item["客户"], item["发票参考"])
    sum_map[key] = sum_map.get(key, 0) + item["金额"]

# 第二步:过滤掉总和为0的组合对应的行
filtered_data = [item for item in invoice_data if sum_map[(item["客户"], item["发票参考"])] != 0]

# 输出结果
for row in filtered_data:
    print(row)

关键逻辑说明

  • 核心是按客户+发票参考的组合分组,冲销发票与原发票属于同一组合
  • 若组合内金额总和为0,说明该组发票已完全冲销,需移除所有对应行
  • 两种方法均可高效处理4000条数据:纯Python方法适合环境受限场景,Pandas方法更简洁易维护

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:53:17