【发布时间】:2016-11-07 22:35:49
【问题描述】:
假设我有一个包含person_id 和mean_act 列的DataFrame,其中每一行都是特定人的数值。我想计算一个人级别的所有值的 zscore。也就是说,我想要一个新列 mean_act_person_zscore,它被计算为 mean_act 的 zscore,仅使用该人(而不是整个数据集)的 zscores 的均值和 std。
我的第一个方法是这样的:
person_ids = df['person_id'].unique()
for pid in person_ids:
person_df = df[df['person_id'] == pid]
person_df = (person_df['mean_act'] - person_df['mean_act'].mean())/person_df['mean_act'].std()
在每次迭代中,它都会计算正确的 zscore 输出序列,但问题是,由于选择是通过引用而不是按值进行的,因此原始的 df 最终没有 mean_act_person_zscore 列。
关于如何做到这一点的想法?
【问题讨论】:
标签: python numpy pandas scipy statistics