带 groupby 和频率的中位数
Median with groupby and frequency
假设我有这个名为 'market'
的数据框
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
使用 numpy.repeat
和 numpy.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
假设我有这个名为 'market'
的数据框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
使用 numpy.repeat
和 numpy.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