#谢谢老师的回复, 我想要的结果, 是直接的表格, 可以直接写到excel的结果, 并且型号, 规格, 版本, 不能合并在一个单元格, 要分列显示, 我是需要写到#excel中去的, 最终得到就是结果的表格形式, 我想得到的不但是结果, 还包含了表格的形式. 我下面的代码, 正好达到了我所要求的, 正确结果和表格#形式, 但是我感觉, 虽然结果正确, 但是我写的代码可能不太科学, 再次请问下老师第1点: 优化的代码应该怎么写 .. 第2点, 得到的结果打印出来, 第2行前面2列未显示, 如何让它正常显示
df=pd.DataFrame({'型号':['A','A','A','A','B',],
'规格':['H','H','H','H','H'],
'版本':['T','T','K','K','K'],
'数量':[2,1,1,3,5],
'均价':[15,10,5,10,3]})
print(df)
#求加权平均数的函数
def jj(x):
x['均价']=np.average(x['均价'],weights=x['数量'])
return x
df1=df.groupby(['型号','规格','版本']).apply(jj) #不合并行,按分组计算加权平均价写到每行
df1=df1.groupby(['型号','规格','版本','均价']).agg({'数量':np.sum})
#df1=df1.groupby(['型号','规格','版本']).agg({'数量':np.sum,'均价':'jj'}) #想用此句代替上面2句,但出错
print(df1)
型号 规格 版本 数量 均价
0 A H T 2 15
1 A H T 1 10
2 A H K 1 5
3 A H K 3 10
4 B H K 5 3
数量
型号 规格 版本 均价
A H K 8.750000 4
T 13.333333 3
B H K 3.000000 5
|