【问题标题】:Calculate the mean in pandas while a column has a string当列有字符串时计算熊猫的平均值
【发布时间】:2021-12-15 18:12:34
【问题描述】:

我目前正在学习熊猫,我正在使用一个 imdb 电影数据库,其中一列是电影的持续时间。但是,其中一个值是“无”,所以我无法计算平均值,因为中间有这个字符串。我想将“无”更改为 = 0,但这会扭曲结果。如下代码所示。

dur_temp = duration.replace("None", 0)
dur_temp = dur_temp.astype(float)
descricao_duration = dur_temp.mean()

关于我应该怎么做才能不歪曲数据有什么想法吗?我还绘制了它,它变得更加清楚它是如何倾斜的。

【问题讨论】:

    标签: python python-3.x pandas dataframe mean


    【解决方案1】:

    您可以将“无”替换为numpy.nan,而不是使用 0。

    这样的事情应该可以解决问题:

    import numpy as np
    dur_temp = duration.replace("None", np.nan)
    descricao_duration = dur_temp.mean()
    

    【讨论】:

      【解决方案2】:

      如果您希望它适用于您的 pandas 系列中的任何字符串,您可以使用 pd.to_numeric:

      pd.to_numeric(dur_temp, errors='coerce').mean()
      

      这样所有不能转换成float的值都会被NaN替换,不管是哪个

      【讨论】:

        【解决方案3】:

        只需像这样按条件过滤

        df[df['a']!='None'] #assuming your mean values are in column a
        

        【讨论】:

          【解决方案4】:

          使它们成为 np.NAN 值

          我将其写为答案,因为我无法评论 df = df.replace('None ', np.NaN) 或 df.replace('None', np.NaN, inplace=True)

          【讨论】:

            【解决方案5】:

            你可以使用fillna(value=np.nan),如下图:

            descricao_duration = dur_temp.fillna(value=np.nan).mean()
            

            演示:

            import pandas as pd
            import numpy as np
            
            dur_temp = pd.DataFrame({'duration': [10, 20, None, 15, None]})
            descricao_duration = dur_temp.fillna(value=np.nan).mean()
            print(descricao_duration)
            

            输出:

            duration    15.0
            dtype: float64
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2022-11-14
              • 2021-02-27
              • 2019-12-23
              • 2019-11-24
              • 2019-11-09
              • 2018-06-23
              相关资源
              最近更新 更多