【问题标题】:TypeError: float() argument must be a string or a number, not 'SimpleImputer'TypeError:float() 参数必须是字符串或数字,而不是“SimpleImputer”
【发布时间】:2022-01-09 01:25:27
【问题描述】:
all_data = pd.concat([train_data, test_data])
average = all_data.Age.median()
print('Average Age: {0}'.format(average))
train_data.fillna(value= {'Age' : average, inplace : True})
test_data.fillna(value= {'Age' : average, inplace : True})

错误:

TypeError                                 Traceback (most recent call
 last) <ipython-input-42-e465cf5beb42> in <module>()
       1 all_data = pd.concat([train_data, test_data])
 ----> 2 average = all_data.Age.median().values()
       3 print('Average Age: {0}'.format(average))
       4 train_data.fillna(value= {'Age' : average, inplace : True})
       5 test_data.fillna(value= {'Age' : average, inplace : True})
 
 3 frames /usr/local/lib/python3.7/dist-packages/pandas/core/nanops.py
 in nanmedian(values, axis, skipna, mask)
     611     if not is_float_dtype(values.dtype):
     612         try:
 --> 613             values = values.astype("f8")
     614         except ValueError as err:
     615             # e.g. "could not convert string to float: 'a'"
 
 TypeError: float() argument must be a string or a number, not
'SimpleImputer'

您好,我对这种情况感到困惑,即使使用 scikit-learn 也显示相同。请帮助我并提前感谢!

【问题讨论】:

  • all_data.Age.median() 应该是一个标量,我会去掉它右边的 .values() 。另外,请确保年龄列上只有数字。

标签: python scikit-learn sklearn-pandas


【解决方案1】:

这应该可以解决问题:

median = all_data['Age'].median()
train_data['Age'] = train_data['Age'].fillna(value=median)
test_data['Age'] = test_data['Age'].fillna(value=median)

【讨论】:

    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 2017-08-29
    • 1970-01-01
    • 2019-07-07
    相关资源
    最近更新 更多