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

如何用Python统计DataFrame中零值并对卖家进行分类统计

按销售数据分类卖家并统计数量的Python实现

示例数据构造

首先还原你提供的DataFrame:

import pandas as pd

data = {
    'Seller': ['SellerA', 'SellerB', 'SellerC', 'SellerD', 'SellerE', 'SellerF', 'SellerG', 'SellerH', 'SellerI'],
    'Jan-02': [2, 12, 100, 0, 10, 100, 10, 7, 0],
    'Feb-02': [0, 0, 150, 0, 22, 12, 70, 1, 0],
    'Mar-02': [11, 30, 0, 0, 40, 11, 100, 1, 0],
    'Apr-02': [12, 0, 0, 0, 0, 22, 121, 1, 0],
    'May-02': [13, 40, 275, 0, 0, 0, 21, 1, 0],
    'Jun-02': [17, 45, 300, 0, 0, 0, 22, 21, 0]
}

df = pd.DataFrame(data)
df.set_index('Seller', inplace=True)

分类逻辑与实现

根据需求,按以下规则对卖家分类:

  1. 始终为0:所有月份的销售数据均为0
  2. 最后3个日期均为0:非全0,但最后3列(Apr-02、May-02、Jun-02)数据全为0
  3. 偶尔出现0:存在0值,但不属于上述两类
  4. 从未出现0:所有月份数据均不为0

实现代码如下:

# 计算各类条件的布尔标记
all_zero = (df == 0).all(axis=1)
last_three_zero = (df.iloc[:, -3:] == 0).all(axis=1) & ~all_zero
never_zero = (df != 0).all(axis=1)
occasional_zero = ~all_zero & ~last_three_zero & ~never_zero

# 统计各类别数量及卖家列表
category_stats = {
    '始终为0': {
        'count': all_zero.sum(),
        'sellers': all_zero[all_zero].index.tolist()
    },
    '最后3个日期均为0': {
        'count': last_three_zero.sum(),
        'sellers': last_three_zero[last_three_zero].index.tolist()
    },
    '偶尔出现0': {
        'count': occasional_zero.sum(),
        'sellers': occasional_zero[occasional_zero].index.tolist()
    },
    '从未出现0': {
        'count': never_zero.sum(),
        'sellers': never_zero[never_zero].index.tolist()
    }
}

# 输出结果
for category, stats in category_stats.items():
    print(f"{category} - 卖家数量={stats['count']};例如{stats['sellers']}")

运行结果

执行后会输出:

始终为0 - 卖家数量=2;例如['SellerD', 'SellerI']
最后3个日期均为0 - 卖家数量=1;例如['SellerE']
偶尔出现0 - 卖家数量=3;例如['SellerA', 'SellerB', 'SellerC']
从未出现0 - 卖家数量=2;例如['SellerG', 'SellerH']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:15:25