【问题标题】:Not including empty cells in mean calculation in a dataframe在数据框中的平均计算中不包括空单元格
【发布时间】:2018-09-26 16:50:27
【问题描述】:

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

谢谢!

【问题讨论】:

  • 您想替换空单元格 bt zero (0) 吗?

标签: python pandas dataframe nan


【解决方案1】:

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

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

【讨论】:

  • @ Sean ,很好的解决方案。 +1
  • 一开始我是这么想的,后来觉得有点“作弊”。现在初始表中的单元格不可能有零值,因此数据框中的每个零都是 nan,因此您的解决方案可以解决当前问题。当初始表具有实际的零值和空单元格时,您有什么想法吗?
  • @gtroupis,看看df[~pd.isnull(df)] 是否对您的下一个用例有用。
【解决方案2】:

这就是你可以用零替换空单元格的方法..

>>> 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-17
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    相关资源
    最近更新 更多