【问题标题】:Converting Pandas df to numeric将 Pandas df 转换为数字
【发布时间】:2017-08-18 19:48:32
【问题描述】:

我正在尝试使用 statsmodel 来构建一些 logit 模型。我遇到了一个错误,它告诉我转换为浮点数时出错。

logit = sm.Logit(logit_df.isFraud, logit_df.columns[1:])

ValueError: could not convert string to float: 'high_fraud_cities'

如果我删除 high_fraud_cities,我只会在不同的列上得到另一个错误

我有一个数据框:

  • isFraud(二进制)
  • 距离(整数)
  • high_fraud_cities(二进制)
  • is_mobile(二进制)

isFraud distance high_fraud_cities is_mobile 0 24 1 0 1 371 1 1 0 8 0 0

我试图找到数据类型:

logit_df.dtypes

得到以下结果:

  • int64
  • float64
  • int64
  • int32

我尝试了本网站推荐的一些方法,包括:

astype

logit = sm.Logit(logit_df.isFraud.astype(float), logit_df.columns[1:].astype(float))

to_numeric

logit_df.isFraud = pd.to_numeric(logit_df.isFraud, errors='coerce')

我导出到 Excel 以检查其中是否有隐藏字符串或 NaN,但它没有显示任何此类问题。有关如何解决此问题的任何建议?

提前致谢!

【问题讨论】:

  • 能否分享您的数据样本?
  • 是的。请参阅上面的修改!

标签: python pandas statsmodels


【解决方案1】:

您需要将训练列作为第二个参数传递给sm.Logit,更改您的代码如下:

train_columns = logit_df.columns[1:]
logit = sm.Logit(logit_df.isFraud, logit_df[train_columns])

【讨论】:

    猜你喜欢
    • 2022-01-19
    • 2016-09-17
    • 2019-12-31
    • 2018-11-30
    • 2017-05-17
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    相关资源
    最近更新 更多