![](/img/trans.png)
[英]How can I fill NaN values in a dataframe with the average of the values above it?
[英]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_numeric
和errors='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.