【问题标题】:ValueError: Unable to parse string ""60800""ValueError: 无法解析字符串 ""60800""
【发布时间】:2020-11-04 20:54:28
【问题描述】:

所以我想用 pandas 转换浮点数中的一列字符串:

out['Day ahead'] = pd.to_numeric(out['Day ahead'],downcast = 'float')

Screenshot of my excel :

我不知道控制台为什么返回ValueError: Unable to parse string ""60800""

非常感谢!

【问题讨论】:

  • 您好,您能否复制并粘贴一些 Excel 工作表值,在它们的列名下,这样人们就不必打开链接了?问题和答案有一个代码块格式选项。
  • 你必须去掉额外的引号。
  • 欢迎来到 SO。引号似乎是字符串的一部分。如果是这样,您必须在转换为浮动之前先替换它们。请在提问时关注guidelines

标签: python pandas string


【解决方案1】:

你可以试试:

out['Day ahead'] = out['Day ahead'].apply(lambda x: x[1:-1]).astype(float)

基本上,x[1:-1] 将去掉双引号,因为它需要第二个字符直到倒数第二个。我建议使用这种方法,因为看起来您列中的所有值都被双引号引起来

编辑:感谢@Manakin

另外两种方法似乎更简单。

  1. 使用str.strip()
out['Day ahead'] = out['Day ahead'].str.strip('"').astype(float)
  1. 使用'str.replace()`
out['Day ahead'] = out['Day ahead'].str.replace('"', '').astype(float)

【讨论】:

  • 这里不需要 lambda 看看 str.strip()str.replace
  • 非常感谢克里斯托弗,它成功了!奇怪的是,我通过像这样在 python 中粘贴一个单元格来检查它不是双引号问题:type("60800") 并且它返回了'str'。
  • @RaphaelMaillard,不知道你为什么说它不是双引号,因为你在评论中粘贴的确实是双引号。但无论如何,我很高兴我的回答有所帮助。
  • 是的,我猜这很令人困惑,但我认为第二个引用来自引用错误的 python 控制台。由于该数字已在 excel 中引用...如果您查看 excel 的屏幕截图,您会发现只有一个引用。祝您有美好的一天!
  • @RaphaelMaillard,哈哈。我指的是这个 -> " '
猜你喜欢
  • 1970-01-01
  • 2023-03-28
  • 2020-05-01
  • 2018-11-10
  • 1970-01-01
  • 2013-11-26
  • 1970-01-01
  • 2021-07-24
  • 2021-04-24
相关资源
最近更新 更多