用数据帧中的列的平均值替换字符串值

时间:2018-03-19 18:15:02

标签: pandas

我有一个数据文件,我加载并使用pandas Dataframe进行处理。我的代码有效,但我想知道是否有更有效的方法来实现我想要做的事情。我的代码如下:

df = pd.read_csv("file_name.data", sep="\s+", names=["A","B","Horsepower"])
df1 = df[df.Horsepower != '?']
df2 = df1["Horsepower"].apply(pd.to_numeric)
df.replace('?', df2.mean())

在数据本身中,Horsepower列中包含几个已被'?'替换的缺失值。上面的代码取代了这些'?'使用马力列平均值的值,不包括'?'值。

有了这个,有没有更有效的方法来取代'?' "马力"中的值用"马力"的平均值列?

1 个答案:

答案 0 :(得分:1)

这将起作用,并将平均转换为数字的任何内容转换为NaN

df['Horsepower'] = df['Horsepower'].replace('?', 
    np.mean(pd.to_numeric(df['Horsepower'], errors='coerce')))