Python 在数据帧的平均值计算中不包括空单元格

Python 在数据帧的平均值计算中不包括空单元格,python,pandas,dataframe,nan,Python,Pandas,Dataframe,Nan,我从excel文件中读取一个值表作为数据框,其中有些单元格是空的,因为缺少一些数据。我需要计算每行的平均值,但空单元格被读取为零,因此包含在计算中,这是误导。在不包括空单元格的情况下,如何计算平均值?我发现只有当表被读取为字符串表时,空单元格才能被读取为“Nan”,但我需要数字。有什么帮助吗 塔克斯 任何NaN值都不应计入平均值。尝试用np.nan替换缺失的值,然后重复平均值计算。如果它们当前为零,请尝试: df.replace(0.0, np.nan, inplace=True) df.mea

我从excel文件中读取一个值表作为数据框,其中有些单元格是空的,因为缺少一些数据。我需要计算每行的平均值,但空单元格被读取为零,因此包含在计算中,这是误导。在不包括空单元格的情况下,如何计算平均值?我发现只有当表被读取为字符串表时,空单元格才能被读取为“Nan”,但我需要数字。有什么帮助吗


塔克斯

任何NaN值都不应计入平均值。尝试用
np.nan
替换缺失的值,然后重复平均值计算。如果它们当前为零,请尝试:

df.replace(0.0, np.nan, inplace=True)
df.mean()

这就是用零替换空单元格的方法

>>> df = pd.DataFrame(dict(A=['2', 'hello'], B=['', '3']))
>>> df
       A  B
0      2
1  hello  3
>>> def convert_fill(df):
...     return df.stack().apply(pd.to_numeric, errors='ignore').fillna(0).unstack()
...
>>> convert_fill(df)
       A  B
0      2  0
1  hello  3
df[~pd.isnull(df)]非常棒,它只得到非空单元格

>>> print(df[~pd.isnull(df)])
       A  B
0      2
1  hello  3

你想把空单元格换成bt
zero(0)
?@Sean,很好的解决方案+一开始我就是这么想解决这个问题的,但后来我觉得这有点“作弊”。目前,初始表中的单元格不可能有零值,因此数据帧中的每个零都是nan,因此您的解决方案可以解决当前的问题。当初始表有实际的零值和空单元格时,您知道我应该怎么做吗?@gtroupis,如果这对您的下一个用例有用,请查看
df[~pd.isnull(df)]