2024-05-08 02:49:29 发布
网友
有一个带有值的df
df
name maths english chemistry mark 10 0 20 tom 10 20 30 hall 0 25 15
如何获取每个用户的平均分数,而不考虑其中的值0
预期产量
name maths english chemistry average marks mark 10 0 20 15 tom 10 20 30 30 hall 0 25 15 20
您可以将要忽略的值更改为nan,然后计算平均值。这可以通过df.replace({0: pd.NA})完成,如以下代码所示:
nan
df.replace({0: pd.NA})
import pandas as pd df = pd.DataFrame({ "math": {"mark": 10, "tom":10, "hall": 0}, "english": {"mark":0, "tom": 20,"hall":25}, "chemistry": {"mark":20, "tom":30, "hall":15} }) df["average_marks"] = df.replace({0: pd.NA}).mean(axis=1) df
产出:
math english chemistry average_marks mark 10 0 20 15.0 tom 10 20 30 20.0 hall 0 25 15 20.0
在计算平均值之前,可以屏蔽零值:
df.assign(average_marks=df.mask(df.eq(0)).select_dtypes("number").mean(1)) name maths english chemistry average_marks 0 mark 10 0 20 15.0 1 tom 10 20 30 20.0 2 hall 0 25 15 20.0
@trimvi的解决方案更简单。这只是一种选择
您可以将要忽略的值更改为
nan
,然后计算平均值。这可以通过df.replace({0: pd.NA})
完成,如以下代码所示:产出:
在计算平均值之前,可以屏蔽零值:
@trimvi的解决方案更简单。这只是一种选择
相关问题 更多 >
编程相关推荐