【pandas】如何将某列汇总数据拆分成对应的分项数据
问题描述:
在处理超市存货数据时遇到这种的问题。某超市在销售过程中,会将同类最先进货的货品卖出,但只有一个卖出总数,现想利用卖出总数,得到每批次的进货数量卖出了多少。如图,现得到伊利酸奶总卖出量为200,在“20210802”那批次进货的“已卖出数量”应填100,在“20210810”对应的“已卖出数量”应填100。如何用程序处理该问题?
答
基本思路是求累计,再计算销量
直接上代码,有帮助,望采纳
import pandas as pd
data = pd.read_excel('123.xlsx')
# excel 合并单元格处理
data = data.fillna(method='pad')
# 计算累计进货量
data['累计进货量'] = data.sort_values('进货日').groupby('商品')['进货量'].cumsum()
# 计算销量
def calc_sales(a, b, c):
"""
a:进货量,b:总销量, c:累计进货量
"""
if b > c:
return a
else:
return a+b-c
data['out'] = data.apply(lambda x: calc_sales(x['进货量'], x['总销量'], x['累计进货量']), axis=1)
data