我有一个与此类似的Pandas数据框:
>>> df = pd.DataFrame(data=np.array([['red', 'cup', 1.50], ['blue', 'jug', 2.40], ['red', 'cup', 1.75], ['blue', 'cup', 2.30]]),
... columns=['colour', 'item', 'price'])
>>> df
colour item price
0 red cup 1.5
1 blue jug 2.4
2 red cup 1.75
3 blue cup 2.3
对于每种可能的颜色和项目组合,计算价格摘要统计信息的最简洁方法是什么?
预期输出,例如:
colour item mean stdev
red cup 1.625 0.176
blue jug 2.4 NA
blue cup 2.3 NA
答案 0 :(得分:2)
请注意,由于numpy
array
仅接受一个dtype
,因此创建数据框的方式已迫使列价格不再是数字字符串
运行:
df.price=pd.to_numeric(df.price)
我将在describe
之后使用groupby
df.groupby(['colour','item']).price.describe()# you can add reset_index() here
count mean std min 25% 50% 75% max
colour item
blue cup 1.0 2.300 NaN 2.3 2.3000 2.300 2.3000 2.30
jug 1.0 2.400 NaN 2.4 2.4000 2.400 2.4000 2.40
red cup 2.0 1.625 0.176777 1.5 1.5625 1.625 1.6875 1.75
或者您可以使用agg
df.groupby(['colour','item']).price.agg(['std','mean'])
答案 1 :(得分:1)
您可以结合使用pd = %athena select 1
pd
和%%athena
select col1, count(*)
from my_table
group by col1
并将其传递给groupby
和.agg
函数:
mean