【问题标题】:Pandas falsely converting strings to floatsPandas 错误地将字符串转换为浮点数
【发布时间】:2017-11-29 21:38:15
【问题描述】:

我正在使用 Excel 中的 csv 文件来创建 pandas 数据框。最近,我遇到了几个关于数据框中每一列的 dtypes 的 ValueError 消息。

这是最近提出的异常:

ValueError:无法将字符串转换为浮点数:'OH'

在我的数据框上运行 pandas 的 dtypes 方法后,它显示此特定列 addr_state 是一个对象,而不是一个浮点数。

我已将所有代码粘贴在下面以进行澄清:

work_path = 'C:\\Users\\Projects\\loans.csv'
unfiltered_y_df = pd.read_csv(work_path, low_memory=False, encoding='latin-1')
print(unfiltered_y_df.dtypes)
filtered_y_df = unfiltered_y_df.loc[unfiltered_y_df['loan_status'].isin(['Fully Paid', 'Charged Off', 'Default'])]

X = StandardScaler().fit_transform(filtered_y_df[[column for column in filtered_y_df]])
Y = filtered_y_df['loan_status']

另外,是否可以明确地写出每一列的数据类型?现在我觉得这是解决这个问题的唯一方法。提前致谢!

【问题讨论】:

  • df = df[modelFeatures].astype(float)
  • 抛出错误的那一行到底是什么?
  • 抱歉,我定义 X 变量的那一行导致了错误。

标签: python csv pandas dataframe type-conversion


【解决方案1】:

所以我认为这里有两个问题:

  1. 要打印出每列的类型,只需使用 ftypes 或 dtypes 方法:

    即 unfiltered_y_df.ftypes

  2. 你说'addr_state'是一个对象而不是一个浮点数。这就是问题所在,StandardScaler() 仅适用于浮点数,因此它试图将您的状态“OH”强制为浮点数并且不能,因此出现错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 2019-04-15
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多