【问题标题】:Error ::: ValueError: could not convert string to float: '28,37'错误 ::: ValueError: 无法将字符串转换为浮点数:'28,37'
【发布时间】:2019-09-28 07:25:37
【问题描述】:

我尝试对我的数据进行逻辑回归,但出现此错误 ValueError:无法将字符串转换为浮点数:'28,37' 我的代码:

 X_train, X_test, y_train, y_test = train_test_split(X, y,
                                            stratify=y, 
                                            test_size=0.3)
 logisticRegr = LogisticRegression()
 logisticRegr.fit(X_train, y_train)
 predictions = logisticRegr.predict(X_test)

请问我该如何解决?

【问题讨论】:

  • 您的 X_train 中的小数分隔符似乎有误,用逗号而不是点
  • 替换 "," 每个 "."另一个提示,如果更大的数字包含像 (1.234,84) 这样的点,你也会遇到问题

标签: python pandas dataframe logistic-regression


【解决方案1】:

字符串中的分隔符有误。您应该使用. 而不是,

比较:

print(float('28,37'))

ValueError: 无法将字符串转换为浮点数:'28,37'

收件人:

print(float('28.37'))

28.37

【讨论】:

    【解决方案2】:

    怎么样?

    df.column1=df.column1.str.replace(',', '.', regex=False)
    df.column1 = df.column1.astype(float)
    

    经过测试

      column0      column1
    0    row0     179319,0
    1    row1      89659,5
    2    row2      59773.0
    3    row3     44829,75
    4    row4      35863.8
    5    row5      29886.5
    6    row6      25617,0
    7    row7    22414.875
    8    row8  19924.33333
      column0      column1
    0    row0     179319.0
    1    row1      89659.5
    2    row2      59773.0
    3    row3     44829.75
    4    row4      35863.8
    5    row5      29886.5
    6    row6      25617.0
    7    row7    22414.875
    8    row8  19924.33333
    

    【讨论】:

      【解决方案3】:

      问题是字符串内部的 ',' 因为您无法将像“28,37”这样的字符串转换为浮点数。所以字符串应该像“28.37”

      print(float("28.37"))
      

      28.37

      【讨论】:

      • 谢谢我解决了。但是我有一些带有日期的变量会导致像这样的错误 ValueError: could not convert string to float: '05OCT2013' 你知道该怎么做吗? (在物流注册中)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      • 2018-06-13
      • 2013-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多