python - 按月分组并将一列的平均值除以另一列的平均值?

我有两列 A 和 B。我想将 A 的平均值除以 B 的平均值。

df['Test']= df.groupby('Month').apply(lambda x: df['A'].mean().astype(float)/df['B'].mean().astype(float))

帮帮我,错误在哪里?

回答1

问题很可能是您使用 x 作为参数定义 lambda,然后使用 df。它应该是:

df.groupby('Month').apply(lambda x: x['A'].mean()/x['B'].mean())

注意。在计算平均值后转换为浮点数没有什么意义,你应该先转换吗?

您可以改用:

g = df.groupby('Month')
out = g['A'].mean()/g['B'].mean()

或转换:

g = df.groupby('Month')
df['Test'] = g['A'].transform('mean')/g['B'].transform('mean')