将Pandas df转换为数字

时间:2017-08-18 19:48:33

标签: python pandas statsmodels

我正在尝试使用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(binary)

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

我试图找到dtypes:

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,但它没有显示任何此类问题。有关如何解决此问题的任何建议吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

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

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