我试图找到基于多个列的列的加权中值.以下是一个示例:
Date | Item | BetterPrice | TotalCost | Location
-------------------------------------------------------------------------
2022-03-01 | AB | 0 | 200 | 3
2022-03-01 | AB | 0 | 200 | 2
2022-03-01 | AB | 1 | 300 | 3
2022-03-01 | AC | 1 | 400 | 2
2022-04-01 | AB | 1 | 400 | 1
2022-04-01 | AC | 1 | 100 | 3
2022-04-01 | AC | 0 | 50 | 1
我想找到Location
列的加权中值,我想用TotalCost
列作为权重.我也想使用聚合,因为我也想找到更好价格列的和.
最初,我try 将包wquantiles
与weighted.median
函数一起使用,为了完成上述任务,我try 了类似于以下代码的内容:
import wquantiles
wm = lambda x: weighted.median(x , TotalCost)
df2 = df.groupby(['Date', 'Item']).agg({'BetterPrice': 'sum', "Location": wm}).reset_index()
不幸的是,这似乎不起作用,所以我想我应该试着问一下如何最好地完成这项任务,谢谢!
此外,这里有一个数据框架来复制我的上述问题(希望足够详细)
import pandas as pd
data={'Date':['2022-03-01','2022-03-01','2022-03-01','2022-03-01', '2022-04-01', '2022-04-01', '2022-04-01'],'Item':['AB','AB','AB','AC', 'AB', 'AC', 'AC'],'BetterPrice':[0,0,1,1, 1, 1, 0],'TotalCost':[200,200,300,400, 400, 100, 50],'Location':[3,2,3,2,1,3, 1]}
df=pd.DataFrame(data)