从计算值中排除列

Posted

技术标签:

【中文标题】从计算值中排除列【英文标题】:Exclude a column from calculated value 【发布时间】:2021-12-30 23:02:02 【问题描述】:

我是图书馆的新手,我正在尝试弄清楚如何将列添加到数据透视表中,其中包含过去三个月交易数据的行数据的平均值和标准差。

以下是设置数据透视表的代码:

previousThreeMonths = [prev_month_for_analysis, prev_month2_for_analysis, prev_month3_for_analysis]
dfPreviousThreeMonths = df[df['Month'].isin(previousThreeMonths)]

ptHistoricalConsumption = dfPreviousThreeMonths.pivot_table(dfPreviousThreeMonths,
                                                            index=['Customer Part #'],
                                                            columns=['Month'],
                                                            aggfunc='Qty Shp':np.sum
                                                            )

ptHistoricalConsumption['Mean'] = ptHistoricalConsumption.mean(numeric_only=True, axis=1)
ptHistoricalConsumption['Std Dev'] = ptHistoricalConsumption.std(numeric_only=True, axis=1)
ptHistoricalConsumption

生成的数据透视表如下所示:

问题在于标准差列在其计算中包含了平均值,而我只希望它使用前三个月的原始数据。例如,部件号 2225 的 Std Dev 应该是 11.269,而不是 9.2。

我确信有更好的方法可以做到这一点,但我只是错过了一些东西。

【问题讨论】:

【参考方案1】:

一种方法是在调用.std() 之前暂时删除Mean 列:

ptHistoricalConsumption['Std Dev'] = ptHistoricalConsumption.drop('Mean', axis=1).std(numeric_only=True, axis=1)

这不会将其从永久删除,它只会将其从馈送到.std() 的副本中删除。

【讨论】:

行得通,谢谢!

以上是关于从计算值中排除列的主要内容,如果未能解决你的问题,请参考以下文章

用排除法计算 SQL 表中最常见的单词

使用 sum 函数从 groupby 数据框中排除日期列

如何在使用 SQL 的重复搜索中排除其他值中的值

使用Excel中的特定排除项计算前3个分数

从模型性能计算中排除缺失值

从日期计算中排除周末和自定义日期(即假期)