python求几何平均_创建复杂条件列(几何平均值)Python

这将计算每个站点的几何平均值并检查其是否大于30:>>> df['geo_mean_acceptable'] = (

df.groupby('Site')

.transform(lambda group: group.prod() ** (1 / float(len(group))) > 30)

.astype(bool))

这是每个站点的几何平均值:

^{pr2}$

使用scipy的几何平均值函数:from scipy.stats.mstats import gmean

>>> df.groupby('Site').EnteroCount.apply(gmean)

Site

A 68.016702

B 121.981006

C 180.000000

Name: EnteroCount, dtype: float64

鉴于五个最高值将为您提供一组中最高的几何平均值,您可以使用以下方法:df.groupby('Site').EnteroCount.apply(lambda group: gmean(group.nlargest(5)))

您可以看到它是如何按组选择最大的五个值,然后将它们用作gmean的参数:>>> df.groupby('Site').EnteroCount.apply(lambda group: group.nlargest(5).values.tolist())

Site

A [1733, 150, 70, 20, 4]

B [1500, 55, 22]

C [180]

Name: EnteroCount, dtype: object

摘要df['swim'] = np.where(

(df.groupby('Site').EnteroCount.transform(max) > 110) |

(df.groupby('Site').EnteroCount.transform(lambda group: gmean(group.nlargest(5))) > 30),

'unacceptable', 'acceptable')

你可能感兴趣的:(python求几何平均)