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

Pandas透视表操作:添加每日销量总计列与大于2值的条件计数列

解决透视表添加自定义列的问题

你的问题核心在于透视表是多层列索引结构,直接用iloc硬编码列位置容易失效(比如列顺序变化时),我们可以利用MultiIndex的层级定位精准操作sum聚合列,完美实现你要的两个需求:

1. 添加每日售出产品总量列(sum聚合列的行求和)

你的透视表dft列分为两层:第一层是聚合方式(sum/len),第二层是日期day。我们可以直接通过dft['sum']选中所有sum聚合的列,再对每行求和:

# 生成透视表后,添加总量列
dft['Fruit Total'] = dft['sum'].sum(axis=1)

2. 添加条件计数列(统计sum列中>2的元素数量)

同样先选中sum聚合列,用gt(2)生成布尔值DataFrame(大于2为True,否则为False),再对每行求和(True会被计为1,False为0,求和结果就是符合条件的数量):

# 添加条件计数列
dft['Count >2'] = dft['sum'].gt(2).sum(axis=1)

完整可运行代码示例

import pandas as pd
import numpy as np

# 生成原始数据
df = pd.DataFrame({ 
    'date': ["22.10.2021", "22.10.2021", "22.10.2021", "23.10.2021", "23.10.2021", "25.10.2021", "22.10.2021", "23.10.2021", "22.10.2021", "25.10.2021"], 
    'Product': ["apple", "apple", "orange", "orange", "apple","apple", "apple", "orange", "orange", "orange"], 
    'sold_kg': [2, 3, 1, 6, 2,2, 3, 1, 6, 2,]})
df['day']=pd.to_datetime(df['date']).dt.day 

# 生成透视表
dft=df.pivot_table(values='sold_kg', columns ='day', index='Product', aggfunc=[np.sum,len])

# 添加自定义列
dft['Fruit Total'] = dft['sum'].sum(axis=1)
dft['Count >2'] = dft['sum'].gt(2).sum(axis=1)

print(dft)

运行结果预览

sum           len           Fruit Total  Count >2
day           22    23    25   22   23   25                 
Product                                                      
apple       8.0  2.0  2.0  3.0  1.0  1.0       12.0         1
orange      7.0  7.0  2.0  2.0  2.0  1.0       16.0         2

这种方式完全基于列的层级逻辑,不管你的日期day数量怎么变化,代码都能稳定运行,比硬写iloc位置要可靠得多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 21:52:38