【问题标题】:Getting the average price of certain groups获取某些组的平均价格
【发布时间】:2022-06-23 18:51:59
【问题描述】:

目前有一个数据框是:

price     type                 randomc1     randomc2   randomc3
2         Dumpling
1         Milk Based Drinks
2         Dumpling
3         Milk Based Drinks
7         Cold Cuts
5         Cold Cuts

想要获得相似类型的平均价格。

想要的输出:

type                        average
Dumpling                       2
Milk Based Drinks              2
Cold Cuts                      6

此外,大约有 100 种不同的“类型”。因此,理想情况下希望打印每个“类型”。

任何帮助将不胜感激。

edit: output to print(df.to_dict()) 

{'Dish_Type': ['Dumpling',
  'Dumpling',
  'Milk Based Drinks',
  'Milk Based Drinks',
  'Dumpling'],
 'Dish_Price': ['$9.95', '$7.95', '$8.95', '$8.95', '$9.95']}

【问题讨论】:

  • 友好的问题,如果你说“groupby and average”作为问题的标题,你真的尝试过groupby and average吗? groupby('type')['price'].mean()?

标签: python pandas dataframe average


【解决方案1】:

你可以使用:

out = (df.assign(Dish_Price=df['Dish_Price'].str.lstrip('$').astype(float))
         .groupby('Dish_Type', as_index=False)
         .agg(Dish_Average=('Dish_Price', 'mean')))
print(out)

# Output
           Dish_Type  Dish_Average
0           Dumpling      9.283333
1  Milk Based Drinks      8.950000

设置:

data = {'Dish_Type': ['Dumpling', 'Dumpling', 'Milk Based Drinks',
                      'Milk Based Drinks', 'Dumpling'],
        'Dish_Price': ['$9.95', '$7.95', '$8.95', '$8.95', '$9.95']}
df = pd.DataFrame(data)

【讨论】:

  • @Pavan。请检查一下它是否适用于您的情况?
  • @Pavan 对于未来的问题,请从一开始就尽可能准确地处理您的问题。这与最初发布的问题完全不同。
【解决方案2】:

除非我理解正确,否则无论您有多少个不同的type,都将在使用groupby() 时考虑所有这些。你试过了吗:

df.groupby('type',as_index=False).agg(average=pd.NamedAgg('price','mean'))

【讨论】:

  • df.groupby('type')['price'].mean().rename('average').reset_index()
  • 谢谢你,我觉得你的评论很有用!为了保持多样性,我编辑了另一种实现相同输出的选项!
  • df.groupby('type', as_index=False).agg(average=('price', 'mean')) :-P
  • 再次感谢!我想我会保持原样,更明确一点,但输出没有变化:)
  • @CeliusStingher 是的,以前试过这个。但得到同样的错误。错误:只能将 str(不是“int”)连接到 str
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-26
  • 2020-05-16
相关资源
最近更新 更多