Python 在dataframe中,只有大于0的列中的值才能计算平均值吗?
在dataframe中,只有大于0的列中的值才能计算平均值吗? 我有一个结构如下的数据集Python 在dataframe中,只有大于0的列中的值才能计算平均值吗?,python,pandas,dataframe,Python,Pandas,Dataframe,在dataframe中,只有大于0的列中的值才能计算平均值吗? 我有一个结构如下的数据集 Week |Mon |Tues |Weds |Thurs |Fri |Sat |Sun |average :-------:-------:-------:----------:-------:-------:--------:-------:----------- 1 |5915 |2997 |8499 |1248 |308
Week |Mon |Tues |Weds |Thurs |Fri |Sat |Sun |average
:-------:-------:-------:----------:-------:-------:--------:-------:-----------
1 |5915 |2997 |8499 |1248 |3089 |1343 |0 |3298.71
2 |0 |0 |3588 |5693 |1297 |288 |2453 |1902.71
使用平均值将得到所述列中的所有值,该列给出总计/7。
df['average']=df['Mon'、'Tues'、'Weds'、'Thurs'、'Fri'、'Sat'、'Sun']]。平均值(轴=1)
有没有办法通过以下方式获得结果:
Week |Mon |Tues |Weds |Thurs |Fri |Sat |Sun |average (desired output)
:-------:-------:-------:----------:-------:-------:--------:-------:--------------------------------
1 |5915 |2997 |8499 |1248 |3089 |1343 |0 |(5915+2997+8499+1248+3089+1343)/6
2 |0 |0 |3588 |5693 |1297 |288 |2453 |(3588+5693+1297+288+2453)/5
只需添加另一层布尔索引,使其仅为正数:
df[df[['Mon', 'Tues','Weds','Thurs','Fri','Sat','Sun']]>0].mean(axis=1)
只需添加另一层布尔索引,使其仅为正数:
df[df[['Mon', 'Tues','Weds','Thurs','Fri','Sat','Sun']]>0].mean(axis=1)