我被困在计算平均值取决于python中的变量。
我有8个变量,如下所示。
1。
Time df1 df2 df3 df4 df5 df6 df7 df8
2020-01-01 220 250 235 215 221 221 220 253
在这种情况下,我可以计算如下的平均值
df['dfaverage']=(df['df1']+df['df2']+df['df3']+df['df4']+df['df5']+df['df6']+df['df7']+df['df8'])/8
输出将是229.4
但如果其中一个值为零,那么我如何忽略这些值并进行计算?例2 .
Time df1 df2 df3 df4 df5 df6 df7 df8
2020-01-01 220 250 235 215 221 221 220 0
对于case2的输出应该是226,但是当我运行代码时,我将得到197.8。如何在计算平均值时忽略0 ?
您可以将0
替换为缺失的值,并使用mean
:
df['dfaverage'] = df.replace(0, np.nan).mean(axis=1)
print (df)
Time df1 df2 df3 df4 df5 df6 df7 df8 dfaverage
0 2020-01-01 220 250 235 215 221 221 220 0 226.0
或者如果需要指定列名,使用list
:
cols = [ 'df1', 'df2', 'df3', 'df4', 'df5', 'df6', 'df7', 'df8']
df['dfaverage'] = df[cols].replace(0, np.nan).mean(axis=1)
print (df)
Time df1 df2 df3 df4 df5 df6 df7 df8 dfaverage
0 2020-01-01 220 250 235 215 221 221 220 0 226.0