按组计算几何平均数

3
我有一个数据集,包含四列,类似于下面显示的前四列。我想添加另一列,显示某些组中“价格”值的几何平均值,其中每个组由列“类型”确定。
我该怎么做?结果将是一个类似于下面标记为“按类型计算的几何平均价格”的列。

enter image description here

2个回答

3

使用GroupBy.transformgmean

from scipy.stats.mstats import gmean

#if necessary remove `,` and `$`
#df['price'] = df['price'].str.lstrip('$').str.replace(',', '').astype(int)


df['new'] = df.groupby('type')['price'].transform(gmean)

或自定义Lambda函数:

gmean1 = lambda x: x.product() ** (1 / float(len(x)))
df['new'] = df.groupby('type')['price'].transform(gmean1)

0
所以基本上你有三个组。你想根据这个组创建一个新的列。
def meanByGroup(x):
    if x == 111:
        return 245474
    elif x == 222:
        return 194223
    elif x == 333:
        return 124122

然后,df["geomean_price_bytype"] = df["type"].apply(meanByGroup)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接