Python 使用pandas和sklearn的RandomForest回归:输入包含NaN、无穷大或对数据类型(';float32';)太大的值

Python 使用pandas和sklearn的RandomForest回归:输入包含NaN、无穷大或对数据类型(';float32';)太大的值,python,pandas,scikit-learn,random-forest,Python,Pandas,Scikit Learn,Random Forest,由于数据帧中的“nan”值而获取此错误。试图替换nan值,但也不起作用。我不知道发生了什么事 这是流程图 import pandas as pd import numpy as np raw_data = { 'sales':[10,20,30,40,50], 'cost': [24233, 15111, 11111,np.NaN, 3422], 'obs': [1, np.NaN, 3, 1, 2], 'treatment': [

由于数据帧中的“nan”值而获取此错误。试图替换
nan
值,但也不起作用。我不知道发生了什么事

这是流程图

import pandas as pd
import numpy as np
raw_data = {
        'sales':[10,20,30,40,50],
        'cost': [24233, 15111, 11111,np.NaN, 3422],
        'obs': [1, np.NaN, 3, 1, 2],
        'treatment': [0, 1, 0, np.NaN, 0]}

df = pd.DataFrame(raw_data, columns = ['sales','cost', 'obs', 'treatment'])

df

Out[35]: 
   sales   cost  obs treatment
0     10  24233    1         0
1     20  15111  NaN         1
2     30  11111    3         0
3     40    NaN    1       NaN
4     50   3422    2         0
准备培训数据 获取此错误

ValueError:输入包含NaN、无穷大或对数据类型('float32')太大的值

我试过了

df=df.apply(lambda x: x.fillna(x.mean()),axis=0)
TypeError:(+:'int'和'str'的不受支持的操作数类型,以索引代价发生)


您的nan是字符串,这就是您在尝试使用
fillna
时出错的原因。用float-nan替换它们应该是可行的(之后您还需要将该系列转换为float),但是如果您解决了根本问题,它会更干净。你为什么一开始就有串南?您正在从文件中读取数据吗?
nan
是一个字符串
NaN
是一个浮点。@ayhan是从实际数据中的文件读取。当我读取数据时,我只有NaN值。我不知道nan或nan有什么不同。@ayhan Ok我编辑了
df
并将字符串
nan
更改为
np.nan
,但错误仍然存在@Alexander如果您仍然收到一个类型错误,说“+”不支持“int”和“str”,那么这意味着您在其中一列中有字符串。为了使用
.mean
方法,您需要有数字列。您可以尝试
df=df.apply(pd.to_numeric,errors='concurve')
,但请记住,这将用
NaN
替换每个字符串。
df=df.apply(lambda x: x.fillna(x.mean()),axis=0)