【发布时间】:2019-01-30 21:18:19
【问题描述】:
假设您要在全球范围内销售一种产品,并且您想在主要城市的某个地方设立销售办事处。您的决定将完全基于销售数字。
这将是您的(简化的)销售数据:
df={
'Product':'Chair',
'Country': ['USA','USA', 'China','China','China','China','India',
'India','India','India','India','India', 'India'],
'Region': ['USA_West','USA_East', 'China_West','China_East','China_South','China_South', 'India_North','India_North', 'India_North','India_West','India_West','India_East','India_South'],
'City': ['A','B', 'C','D','E', 'F', 'G','H','I', 'J','K', 'L', 'M'],
'Sales':[1000,1000, 1200,200,200, 200,500 ,350,350,100,700,50,50]
}
dff=pd.DataFrame.from_dict(df)
dff
根据您应该选择城市“G”的数据。
逻辑应该是这样的:
1) 查找具有 Max(sales) 的国家/地区
2) 在那个国家,找到 Max(sales) 的地区
3) 在那个地区,找到 Max(sales) 的城市
我试过:groupby('Product', 'City').apply(lambda x: x.nlargest(1)),但这不起作用,因为它会建议城市“C”。这是全球销量最高的城市,但中国并不是销量最高的国家。
我可能要经过几个 groupby 循环。根据结果,过滤原始数据框并在下一级再次进行分组。
为了增加复杂性,您还销售其他产品(不仅仅是“椅子”,还有其他家具)。您必须将每次迭代的结果(例如每个产品的 Max(sales) 的国家/地区)存储在某处,然后在 groupby 的下一次迭代中使用它。
你有什么想法,我如何在 pandas/python 中实现它?
【问题讨论】:
标签: python pandas pandas-groupby