亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 28657 | 回復(fù): 0
打印 上一主題 下一主題

以3列分組, 剩的2列聚合, 1列求和,1列求加權(quán)平均數(shù) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2021-08-14 07:39 |只看該作者 |倒序瀏覽
求助: 把源表以k1, k2, k3這3列為分組, 3列的組合完全相同為1組,  分組之后, 后面2列聚合運算, 數(shù)量列求和,  均價的列 求加權(quán)平均價,  (加權(quán)平均價= (均價*數(shù)量).sum / 數(shù)量.sum ),然后得到1個新的結(jié)果的表,   我看到書上說分組后可以用字典對不同的列作不同的函數(shù)處理, 例子都是系統(tǒng)或庫自帶有的函數(shù)可以實現(xiàn), 但沒有舉例其中某列用了自定義函數(shù)的情況,  我均價用自定義函數(shù)求加權(quán)平均價, 就沒成功,  我就用代碼比較多的方式, 如下的代碼繞來繞去, 確實也得到了我想要的結(jié)果,  但是感覺復(fù)雜了,    請問下老師用簡單點少的代碼如何實現(xiàn)想得到的表的結(jié)果.
源表
k1k2k3數(shù)量均價
ABD215
ABD110
ABC15
ABC310
BBC53
結(jié)果
k1k2k3數(shù)量均價
ABC48.75
ABD313.33
BBC53


import pandas as pd
import numpy as np
df=pd.DataFrame({'k1':['A','A','A','A','B',],
                'k2':['B','B','B','B','B'],
                'k3':['D','D','C','C','C'],
                '數(shù)量':[2,1,1,3,5],
                '均價':[15,10,5,10,3]})
def jj(g):  #加權(quán)平均
    g['均價']=(g['均價']* g['數(shù)量']).sum() / g['數(shù)量'].sum()
    return g
df1=df.groupby(['k1','k2','k3']).apply(jj)        
df1=df1.groupby(['k1','k2','k3','均價'],as_index=False).agg({'數(shù)量':np.sum})
print(df,'\n'*2,df1)

#上面的代碼確實得到了想要的結(jié)果, 但是復(fù)雜了, 想簡單一點能實現(xiàn)的方法
#嘗試了用下面的兩種語句實現(xiàn)上面代碼得到的結(jié)果,但是報錯,請問大師,實現(xiàn)上面代碼的結(jié)果的語句,簡單點的可以用啥代碼實現(xiàn)
#df1=df.groupby(by=['k1','k2','k3']).agg({'數(shù)量':np.sum,'均價':lambda g:np.average(g['均價'],weights=g['數(shù)量'])})
#df1=df.groupby(by=['k1','k2','k3']).agg({'數(shù)量':np.sum,'均價':jj })
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP