我有一个数据文件,我加载并使用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列中包含几个已被'?'替换的缺失值。上面的代码取代了这些'?'使用马力列平均值的值,不包括'?'值。
有了这个,有没有更有效的方法来取代'?' "马力"中的值用"马力"的平均值列?
答案 0 :(得分:1)
这将起作用,并将平均转换为数字的任何内容转换为NaN
。
df['Horsepower'] = df['Horsepower'].replace('?',
np.mean(pd.to_numeric(df['Horsepower'], errors='coerce')))