繁体   English   中英

如何将 nan 或字符串值更改为其所属列的平均值?

[英]How can ı change nan or string values to average of the column to which it belongs?

df = pd.read_csv(self.table_name)

for j in df.values:
    for k in j[0:-1]:
        try:
            k = float(k)
        except ValueError:
            df.replace(to_replace=k,value=np.nan,inplace=True)

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



# df.fillna(df.mean(), inplace=True)
df.to_csv(self.table_name, index=False)
print(df)

这是我的数据框

如果数据在进入训练时有字符串值,则可能无法进入训练。 为了防止这种情况,我创建了一个 function,它通过一个按钮变为活动状态,但字符串值在第一次运行时被删除,在第二次运行中,我得到了我想要的结果。 我把按钮和它的 function 做了 pyqt5。当用户点击我提到的按钮时,他分别连接到这个 function 和它的功能。 但是我无法解决的问题在哪里,有没有人可以提供帮助?

您可以对所有列使用自定义 function,而无需首先通过DataFrame.iloc选择,并使用to_numericerrors='coerce'将值转换为数字,因此如果创建了不可解析值的缺失值。 最后在Series.fillna中用mean替换它们:

def f(x):
    s = pd.to_numeric(x, errors='coerce')
    return s.fillna(s.mean())


df.iloc[:, 1:]= df.iloc[:, 1:].apply(f)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM