【问题标题】:Median with groupby and frequency具有 groupby 和频率的中位数
【发布时间】:2020-05-24 03:48:56
【问题描述】:

假设我有一个名为“市场”的数据框

market = pd.DataFrame({'product': ['milk', 'milk', 'milk', 'bread', 'bread'], 
                   'frequency': [4,2,6,3,5],
                  'price_each': [3,4,5,10,8]})
market

这将是

product frequency price_each
milk    4         3
milk    2         4
milk    6         5
bread   3         10
bread   5         8

如何按 groupby 产品正确计算该中位数及其使用频率?

我做了什么(但得到了错误的结果)

market.groupby('product')['price_each'].median()

真实的和预期的结果是

product   median of price each
milk      4.5       
bread     8       

【问题讨论】:

    标签: python dataframe group-by pandas-groupby median


    【解决方案1】:

    使用numpy.repeatnumpy.median

    new_df = market.groupby('product').apply(lambda x: np.median(np.repeat(x['price_each'], x['frequency'])))
    print(new_df)
    

    输出:

    product
    bread    8.0
    milk     4.5
    dtype: float64
    

    【讨论】:

      猜你喜欢
      • 2019-05-07
      • 2020-04-19
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 2013-01-06
      • 2016-07-30
      • 2019-12-18
      相关资源
      最近更新 更多