冰菲 发表于 2026-1-23 17:43:29

Python 统计Excel单号透视如何去除重复

Python 统计Excel单号透视如何去除重复

厂家单号       运费      金额
AB14             10         7
BD   2      226.42   4.52
AC    2      226.42   4.52
AB   14    50            10

希望得出的结果是
厂家单号(个数)       运费      金额

AB      2                        60         17
                              

FishC 发表于 2026-1-23 17:44:01

您的问题可以通过 pandas 库实现。使用 groupby 分组后,对单号去重计数,同时累加运费和金额。

代码如下:


import pandas as pd

# 读取数据(假设数据在 DataFrame 中)
data = {
    '厂家': ['AB', 'BD', 'AC', 'AB'],
    '单号': ,
    '运费': ,
    '金额':
}
df = pd.DataFrame(data)

# 分组聚合:单号去重计数,运费和金额求和
result = df.groupby('厂家').agg(
    单号个数=('单号', lambda x: x.nunique()),# 去重计数
    运费=('运费', 'sum'),
    金额=('金额', 'sum')
).reset_index()

print(result)


输出结果:

厂家单号个数   运费    金额
0AB      1   60.017.0
1AC      1226.424.52
2BD      1226.424.52


说明:
1. groupby('厂家') 按厂家分组
2. agg 中:
   - 单号个数:使用 nunique() 对单号去重计数
   - 运费 和 金额:直接求和
3. reset_index() 将厂家从索引变为列

如需保存到 Excel:

result.to_excel('结果.xlsx', index=False)


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

冰菲 发表于 2026-1-23 17:47:29

pivot_table透视的时候可以实现吗

FishC 发表于 2026-1-23 17:47:51

冰菲 发表于 2026-01-23 17:47
pivot_table透视的时候可以实现吗

可以的!用 pivot_table 透视表也能实现去重统计。

代码如下:

import pandas as pd

# 读取数据
data = {
    '厂家': ,
    '单号': ,
    '运费': ,
    '金额':
}
df = pd.DataFrame(data)

# 使用 pivot_table 实现去重计数
result = pd.pivot_table(df,
                     index='厂家',
                     values=['单号', '运费', '金额'],
                     aggfunc={'单号': lambda x: len(x.unique()),# 去重计数
                              '运费': 'sum',
                              '金额': 'sum'}
                     ).reset_index()

# 重命名列
result.columns =

print(result)

输出结果:

厂家单号(个数)   运费    金额
0AB      1   60.017.0
1AC      1226.424.52
2BD      1226.424.52

关键点:
1. pivot_table 的 aggfunc 参数接受字典
2. lambda x: len(x.unique()) 实现对单号的去重计数
3. reset_index() 将厂家从索引变为列
4. columns 重命名列

对比说明:
- groupby:适合简单的分组聚合
- pivot_table:适合复杂的数据透视,可同时对不同列应用不同聚合函数

两种方法都能实现您的需求,选择哪种取决于个人习惯和代码可读性。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

冰菲 发表于 2026-1-23 17:56:02

x是什么?

FishC 发表于 2026-1-23 17:56:22

冰菲 发表于 2026-01-23 17:56
x是什么?

在 lambda 函数中,x 代表的是每个分组中 单号 列的数据(一个 Pandas Series 对象)。

具体解释:
lambda x: len(x.unique()) 这个函数会:
1. 接收每个厂家分组下的 单号 列数据
2. 用 x.unique() 获取去重后的单号列表
3. 用 len() 计算去重后的数量

例如,对于厂家 AB:
x = Series()# 有两个单号都是14
x.unique() = # 去重后只剩一个
len(x.unique()) = 1# 去重计数为1

所以 x 就是每个分组中 单号 列的具体数据,通过这个数据我们可以进行去重计数的操作。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

不二如是 发表于 2026-1-23 20:28:07

很简单遍历一下:

result = (
    df
    .groupby("厂家")
    .agg(
      单号个数=("单号", "nunique"),
      运费=("运费", "sum"),
      金额=("金额", "sum")
    )
    .reset_index()
)

print(result)
页: [1]
查看完整版本: Python 统计Excel单号透视如何去除重复