【问题标题】:Dataframe ValueError: could not convert string to float:Dataframe ValueError:无法将字符串转换为浮点数:
【发布时间】:2020-05-31 12:59:02
【问题描述】:

我有一个如下的数据框:

     Score
0   16-1/4
1        9
2        5
3    3-1/2
4        4

我想把它改成浮动,这样:

     Score
0    16.25
1      9.0
2      5.0
3      3.5
4      4.0

为此,我开发了我的代码:

import pandas as pd

def to_float(value):
    if '-' in value:
        return float(value.split("-")[0].strip('\t')) + (float((value.split("-")[1]).split("/")[0].strip('\t')) / float((value.split("-")[1]).split("/")[1].strip('\t')))
    else:
        return value

df['Score'] = df['Score'].map(to_float)

但结果是报错:ValueError: could not convert string to float:

【问题讨论】:

  • 可能是一些错误的值,这意味着不能这样处理?如果是,如何处理?
  • 我已经删除了所有值错误的行。剩下的应该都是如图所示的格式。

标签: python-3.x pandas


【解决方案1】:

仅在需要减去值时在Series.apply 中使用eval

df['Score'] = df['Score'].apply(pd.eval)
print (df)
  Score
0  15.75
1   9.00
2   5.00
3   2.50
4   4.00

如果想要sum 值:

df['Score'] = df['Score'].replace('-','+', regex=True).apply(pd.eval)
print (df)
   Score
0  16.25
1   9.00
2   5.00
3   3.50
4   4.00

【讨论】:

  • @JAY.Y - 什么是错误?对于更多的 100 行不工作 df['Score'] = pd.eval(df['Score']),但 df['Score'].apply(pd.eval) 应该工作得很好
  • 文件“”,第 1 行 --- ^ SyntaxError: invalid syntax
  • @JAY.Y - 似乎是一些与数据相关的问题,如果在文件中不保密,是否可以分享此列?
猜你喜欢
  • 2021-07-22
  • 1970-01-01
  • 2019-03-23
  • 2018-06-13
  • 2013-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多