如何解决数据框replace不使用分配的值替换'-'
我有一个数据集,它的格式完全是对象,而与各个列的内容无关。我想将此数据集用于一些基本的线性回归建模,因此需要将数据集输入可行的输入中。数据集中的大多数列都是数字列,在某些行中缺少值的地方,它使用“-”表示缺少的值。
我需要将破折号替换为np.NaN
,然后将列的格式设置为浮点型。我已经删除了任何字符串列,例如“ country”,因为幸运的是,在此阶段我不需要它们。
我用过:
for col in df:
try:
df[col] = df[col].replace(['-',' '],np.NaN)
df[col] = df[col].astype(float)
except:
# for row in df[col]:
# if not isinstance(row,float):
# print(row)
print('Could not convert ' + col)
得出结论,数据集中至少有一个空格徘徊,因此将其添加到replace()
方法中。
我曾经认为这样做可以,但是在后续步骤中遇到了困难,因此在替换步骤之后使用to_csv
导出了数据集,当我打开文件时,唯一要做的就是替换'- '一无所有。但是它能够将列重新格式化为浮点数。
该步骤失败了,我不知道这是否是因为期望np.NaN
是我试图用该列的平均值填充其余缺失值的地方。
fill_mean = lambda col: col.df_response(col.mean())
for col in df_response:
if df_response[col].isnull().sum() == 0:
print(col + " no NaN's")
else:
try:
df_response.apply(fill_mean,axis = 0)
print(col + " worked as expected")
except:
print(col + ' did not replace NaN with mean')
当没有缺失值并给出列名和预期消息时,此逻辑似乎起作用。但是在缺少值的地方,它什么也不做,我也没有错误,只是我的消息是失败了。
我很感谢您的见识。
解决方法
您的apply函数正在执行某些操作,但是您没有将其存储为新的数据框,因此不会将其返回给您。
如果要用平均值填充na行,则可以执行以下操作:
df = pd.DataFrame({'Name': ['Mick','Alice','Bob','Mary'],'Age': [17,27,37,np.nan]})
mean_age = df['Age'].mean()
df['Age'].fillna(mean_age)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。