如何在 pandas 中查找多个列的非零值 median/mean?
How to find non-zero median/mean of multiple columns in pandas?
我有一长串列,我想一次性计算出非零中位数、均值和标准差。我不能只删除基于 1 列的 0 行,因为同一列中另一列的值可能不是 0。
下面是我目前拥有的计算中位数、均值等的代码,包括零。
agg_list_oper={'ABC1':[max,np.std,np.mean,np.median],
'ABC2':[max,np.std,np.mean,np.median],
'ABC3':[max,np.std,np.mean,np.median],
'ABC4':[max,np.std,np.mean,np.median],
.....
.....
.....
}
df=df_tmp.groupby(['id']).agg(agg_list_oper).reset_index()
我知道我可以编写带有循环的长代码来一次处理一列。
有没有办法在 pandas groupby.agg() 或其他一些函数中优雅地做到这一点?
您可以暂时将 0 替换为 NaN。然后,pandas 将在计算中位数时忽略 NaN。
df_tmp.replace(0, np.nan).groupby(['id']).agg(agg_list_oper).reset_index()
我有一长串列,我想一次性计算出非零中位数、均值和标准差。我不能只删除基于 1 列的 0 行,因为同一列中另一列的值可能不是 0。
下面是我目前拥有的计算中位数、均值等的代码,包括零。
agg_list_oper={'ABC1':[max,np.std,np.mean,np.median],
'ABC2':[max,np.std,np.mean,np.median],
'ABC3':[max,np.std,np.mean,np.median],
'ABC4':[max,np.std,np.mean,np.median],
.....
.....
.....
}
df=df_tmp.groupby(['id']).agg(agg_list_oper).reset_index()
我知道我可以编写带有循环的长代码来一次处理一列。 有没有办法在 pandas groupby.agg() 或其他一些函数中优雅地做到这一点?
您可以暂时将 0 替换为 NaN。然后,pandas 将在计算中位数时忽略 NaN。
df_tmp.replace(0, np.nan).groupby(['id']).agg(agg_list_oper).reset_index()