【问题标题】:Subtract the mean of a group for a column away from a column value从列值中减去列的组的平均值
【发布时间】:2020-04-30 15:57:59
【问题描述】:

我有一个包含 35 列的公司数据集。这些公司可以属于 8 个不同的组之一。如何为每个组创建一个新的数据框,从原始值中减去该组列的平均值?

这是部分数据集的示例。

例如,对于第 1 行,我想从 7204.400207 的值中减去消费者市场的 BANK_AND_DEP 的平均值。我需要为每一列执行此操作。

我认为这是转换和 lambda 的某种组合 - 但不能达到语法。

【问题讨论】:

    标签: pandas pandas-groupby mean


    【解决方案1】:

    尽管涉及循环似乎违反直觉,但循环遍历列本身允许您将其作为矢量化操作执行,这将比.apply() 更快。对于要减去的内容,您将结合 .groupby().transform() 以获得您需要从列中减去的值。然后,只需减去它。

    for column in df.columns:
        df['new_'+column] = df[column]-df.groupby('Cluster')['column'].transform('mean')
    

    【讨论】:

    • 谢谢你 - 我已经尝试了上面的代码并且得到了 KeyError 'Column not found: column'。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 2011-05-19
    相关资源
    最近更新 更多