当列有字符串时计算 pandas 中的平均值

Calculate the mean in pandas while a column has a string

我目前正在学习 pandas 并且我正在使用 imdb 电影数据库,其中一列是电影的持续时间。但是,其中一个值是“None”,所以我无法计算平均值,因为中间有这个字符串。我想将“None”更改为 = 0,但这会使结果发生偏差。就像下面的代码一样。

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

关于我应该怎么做才能不扭曲数据的任何想法?我还绘制了它的图表,它变得更清楚它是如何倾斜的。

使它们成为 np.NAN 值

我把它写成答案是因为我不能评论 df = df.replace('None ', np.NaN) 或 df.replace('None', np.NaN, inplace=真)

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

像这样应该可以解决问题:

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

像这样按条件过滤

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

您可以使用 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

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

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

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